#!/usr/bin/expect が動作しない

#!/usr/bin/expect が動作しない

これはおそらく簡単な質問ですが、実行可能ビットを追加した単純な 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: ...

関連情報