linuxのzipコマンドで暗号化ZIPファイルをバッチ処理中で作成する方法を知りたいです。

-e オプションをつけると、暗号化ZIPファイルを作成できるのですが、パスワードを対話式に聞いてきます。
バッチ処理したいときにこれは困ります。
自動的(非対話式)にパスワードを入力する方法はないでしょうか?
パイプなどで標準入力からパスワードを渡してもうまくいきませんでした。

ダメだった例)
cat pass.txt | zip -e test.zip test.tzt

使用しているZIPコマンドは以下のものです。
Zip 2.3 (November 29th 1999)
(C)1990-1999 info-ZIP

他に暗号化ZIPが使用できるソフトがあったらそちらを教えていただいても結構です。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/10/06 03:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:cpu-master No.1

回答回数4ベストアンサー獲得回数0

ポイント20pt

対話式のパスワードは処理がいったん中断され、アクセスを拒否します。しかし、バッチ処理したいのなら、パスワードを聞かないZIP形式にするべきです。なぜなら、バッチファイルをダブルクリックすれば誰でもファイルにアクセスできるからです。それでは、セキュリティー上何の意味もありません。

id:fslasht

回答ありがとうございます。

しかし、ちょっと趣旨がちがうようです。

バッチファイルは、特定の権限をもつユーザーしか実行出来ないようになっています。

2006/09/29 04:13:28
id:a_b_y No.2

回答回数16ベストアンサー獲得回数6

ポイント20pt
  • eの代わりに-Pを使えばできます。

zip -P pass test.zip test.tzt

ただし、 man zip の該当箇所にも書いてあることですが、セキュリティー上は勧められた方法ではないです。

ちなみに当方 Zip 2.31 (March 8th 2005) で確認しています。

id:fslasht

回答ありがとうございます。

  • P で上手くいきました!

manに載ってたのですね。見落としてましたorz

2006/09/29 11:49:04
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント20pt
  • e オプションでは標準エラーが端末ではない場合使用できないようです。

一応 -P オプションでパスワードを指定できるようですが、コマンドラインからプレインパスワードを指定することになるため非常に脆弱です。他のユーザーから覗かれ放題ですから。

zip コマンドのマニュアルでは本気でやりたいなら脆弱な zip の暗号化の変わりに PGP とか使え(意訳)と書いて有りました。

id:linux_searchers No.4

回答回数11ベストアンサー獲得回数0

ポイント20pt

Expectと組み合わせて使うという方法もあります。

http://www-06.ibm.com/jp/developerworks/linux/020614/

j_l-sc1.html

http://kansai.anesth.or.jp/gijutu/expect/howto-expect.html

パスワード入力他、対話的入力が必要なコマンドの実行を自動化するなど、いろいろ応用できます。

id:furutanian No.5

回答回数112ベストアンサー獲得回数14

ポイント20pt

こーすれば、かなりマシです。

$ zip -P `cat pass.txt` ztest.zip test.tzt

PGP/GPGを使うに越したことはないですが。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません