0

cygwinでbash/expectを使用してpsftpを自動化します。

コードを含む非常に最小限のスクリプトファイルyftp.expがあります。

#!/usr/bin/expect -f
spawn psftp unixftpsrvr
expect "login as: "
send "myID\r"
expect "Password:"
send "Passw0rd\r"
expect "psftp>"

出力:

$ ./yftp.exp
spawn psftp unixftpsrvr
login as: myID
キーボードインタラクティブ認証を使用。
UDS
パスワードを入力してください: Passw0rd

リモート作業ディレクトリは /home/myID
psftp> です

パスワードはクリアテキストとして出力されます!!!

psftp でコマンドを直接実行した場合。出力は次のとおりです。

$ psftp unixftpsrvr
login as: myID
UDS パスワードを入力してください:
リモート作業ディレクトリは /home/myID
psftp>

パスワードは一切表示されません。

これは期待側の問題のようです。

私は、expect スクリプト ファイルのクリア テキストのパスワードは気にしませんが、出力のクリア テキストのパスワードは気にします!

平文でパスワードが表示されないようにするにはどうすればよいですか?

4

1 に答える 1

0

ECHO がオフになる前にパスワードが送信されるのが早すぎる可能性があります。sleep 1の後に追加してみてくださいexpect "Password:"

それでもうまくいかない場合は、次のようにしてみてください。

expect "Password:"
log_user 0; # disable logging to stdout
send "password\r"
log_user 1
于 2016-08-20T14:36:34.640 に答える