「zipcloak」と一緒に「expect」をどのように使用しますか?

「zipcloak」と一緒に「expect」をどのように使用しますか?

これを使用して、という名前の複数のファイルとディレクトリを含むzipファイルを作成します。今、自動処理でパスワード暗号化を処理しようとしています。以下は2つのbashスクリプトで、どちらも機能しません。ziptest.updexpect

!/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またはで始まるディレクトリに空のファイルが作成されます。ziSvbYhyzi3gzEQ4

ベストアンサー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
    '

おすすめ記事