これを使用して、という名前の複数のファイルとディレクトリを含むzip
ファイルを作成します。今、自動処理でパスワード暗号化を処理しようとしています。以下は2つのbashスクリプトで、どちらも機能しません。zip
test.upd
expect
!/bin/bash
MYPWD="mypassword"
expect -c '
spawn zipcloak test.upd
expect {
"*Enter password*" { send "'"$MYPWD"'\r"
exp_continue
}
"*Verify password*" { send "'"$MYPWD"'\r"
exp_continue
}
}'
そしてこのファイルは:
!/bin/bash
MYPWD="mypassword"
expect -c '
spawn zipcloak test.upd
expect "*Enter password*"
send "'"$MYPWD"'\r"
expect "*Verify password*"
send "'"$MYPWD"'\r"
}'
また、直接スクリプトを書いてみましたexpect
。
#!/usr/bin/expect -f
spawn zipcloak test.upd
expect "*Enter password*"
send "password\r"
expect "*Verify password*"
send "password\r"
すべてのスクリプトは最初のパスワード要求を正しく送信しているようですが、2番目のパスワードエントリのテキストを要求していないようです。どうすれば修正できますか?
制限要因:
zipcloak
私は(ではなくzip
)を使うべきですexpect
自動パスワード設定を使用したいです。
コメント:
- 正しいスクリプトを使用しました。
- 最初のスクリプトを使用するたびに、
zi
またはで始まるディレクトリに空のファイルが作成されます。ziSvbYhy
zi3gzEQ4
答え1
解決策は、アクションを取る前にしばらく待つようです!なぜこれが起こるのか全くわかりませんが(コメント、説明、洞察力を歓迎します)、次のスクリプトは現在私にとって効果的です。
#!/bin/bash
MYPWD="mypassword"
expect -c '
spawn zipcloak test.upd
expect "*Enter password*"
sleep 1
send "'"$MYPWD"'\r"
sleep 1
expect "*Verify password*"
sleep 1
send "'"$MYPWD"'\r"
sleep 1
'
答え2
私の解釈は、Alexとctrl-alt-delorの答えがzipcloakプロセスが完了するのを正しく待たないので、zipファイルを暗号化されていないままにします(そして次の名前の一時zimfwtpJ
ファイルを残します)。したがって、そのコードは小さなzipファイルではうまく機能しますが、大きなzipファイルでは機能しません。
これが私の解決策です。
#!/bin/bash
MYPWD="mypassword"
expect -c '
set timeout -1
spawn zipcloak test.upd
expect "*Enter password*"
send "'"$MYPWD"'\r"
expect "*Verify password*"
send "'"$MYPWD"'\r"
expect eof
'
答え3
質問の最初の例は私にとって効果的でした。
!/bin/bash
MYPWD="mypassword"
expect -c '
spawn zipcloak test.upd
expect {
"*Enter password*" { send "'"$MYPWD"'\r"
exp_continue
}
"*Verify password*" { send "'"$MYPWD"'\r"
exp_continue
}
}'
二つ目はそうではありませんでしたが。もう一度お試しください。間違ったスクリプトを実行した可能性があります。これはいつも起こります。なぜ動作しないのか知りたいのですが、間違ったスクリプトを実行しています。