#!/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: ...

相关内容