
これはおそらく簡単な質問ですが、実行可能ビットを追加した単純な expect スクリプトがあり、#!/usr/bin/expect インタープリタ行が無視されているようです。さらに、変数は設定されていないようで、エコーすると空白になります...
#!/usr/bin/expect -f
set device "1.1.1.1"
set user "testuser"
spawn ssh $user@$device
echo $device
echo $user
ls -lh
-rwxr-xr-x root root testexpect.exp
コミュニティの皆様のご協力に感謝します!!
PS 私は Debian Wheezy を実行しており、apt-get install expect で expect をインストールしました...ありがとうございます
答え1
Expect は Tcl 言語に基づいているため、bash の 'echo' は使用しないでください。画面に何かを印刷するには 'puts' を使用する必要があります。
#!/usr/bin/expect -f
set device "1.1.1.1"
set user "testuser"
spawn ssh $user@$device
puts $device
puts $user
そして、次のような結果が得られます。
$ ./test.exp
spawn ssh [email protected]
1.1.1.1
testuser
答え2
エラー メッセージは、明示的なインタープリターを使用してコマンドを実行していることを示唆しています。例:
bash ./testexpect.exp
これは「#!」行を無視します。スクリプトを起動するものは何でも、ファイル名を指定するだけで済みます(または明示的に と指定しますexpect ./testexpect.exp
)。#!行が間違っている場合は、次のようになります。/usr/bin/expect: bad interpreter: ...