4

私の期待コードはこれを行います: 別のマシンに ssh 接続し、パスワードを送信してから、そのマシンのホスト名を返します。以下にコードのサンプルを示します
#!/usr/bin/expect -f
set ipaddr [lrange $argv 0 0]
set password [lrange $argv 1 1]
set timeout -1
spawn ssh root@$ipaddr hostname
match_max 100000
expect "*assword:*"
send -- "$password\r"
expect eof

このコードは何度も完全に実行されますが、断続的に次のエラー
send が表示されます: spawn id exp4 not open
while running
"send -- "$password\r"

なぜこれが起こっているのですか?

4

1 に答える 1

1

理由がわかりました。ssh キーを生成し、宛先マシンにコピーしました。そのため、「Password:」プロンプトはありませんでした。したがって、送信が完了する前に、ssh 接続が閉じられました。

宛先マシンから ssh キーを削除し、スクリプトを再度実行しましたが、問題はありませんでした。

于 2009-09-09T08:15:53.707 に答える