-e オプションをつけると、暗号化ZIPファイルを作成できるのですが、パスワードを対話式に聞いてきます。
バッチ処理したいときにこれは困ります。
自動的(非対話式)にパスワードを入力する方法はないでしょうか?
パイプなどで標準入力からパスワードを渡してもうまくいきませんでした。
ダメだった例)
cat pass.txt | zip -e test.zip test.tzt
使用しているZIPコマンドは以下のものです。
Zip 2.3 (November 29th 1999)
(C)1990-1999 info-ZIP
他に暗号化ZIPが使用できるソフトがあったらそちらを教えていただいても結構です。
対話式のパスワードは処理がいったん中断され、アクセスを拒否します。しかし、バッチ処理したいのなら、パスワードを聞かないZIP形式にするべきです。なぜなら、バッチファイルをダブルクリックすれば誰でもファイルにアクセスできるからです。それでは、セキュリティー上何の意味もありません。
zip -P pass test.zip test.tzt
ただし、 man zip の該当箇所にも書いてあることですが、セキュリティー上は勧められた方法ではないです。
ちなみに当方 Zip 2.31 (March 8th 2005) で確認しています。
回答ありがとうございます。
manに載ってたのですね。見落としてましたorz
一応 -P オプションでパスワードを指定できるようですが、コマンドラインからプレインパスワードを指定することになるため非常に脆弱です。他のユーザーから覗かれ放題ですから。
zip コマンドのマニュアルでは本気でやりたいなら脆弱な zip の暗号化の変わりに PGP とか使え(意訳)と書いて有りました。
Expectと組み合わせて使うという方法もあります。
http://www-06.ibm.com/jp/developerworks/linux/020614/
j_l-sc1.html
http://kansai.anesth.or.jp/gijutu/expect/howto-expect.html
パスワード入力他、対話的入力が必要なコマンドの実行を自動化するなど、いろいろ応用できます。
こーすれば、かなりマシです。
$ zip -P `cat pass.txt` ztest.zip test.tzt
PGP/GPGを使うに越したことはないですが。
回答ありがとうございます。
しかし、ちょっと趣旨がちがうようです。
バッチファイルは、特定の権限をもつユーザーしか実行出来ないようになっています。