我正在使用以下代码
#!/usr/bin/expect -f
#!usr/bin/expect
#package require Expect
puts "Hello world"
spawn ssh xyz@172.31.112.182
expect -nocase "password:"
send "abc123\r"
puts "done"
执行时,它会抛出错误
Hello world
invalid command name "spawn"
while executing
"spawn ssh xyz@172.31.112.182"
(file "temp.tcl" line 9)
我的代码中出现了错误
答案 0 :(得分:2)
在包裹需要Expect之前删除'#'。
答案 1 :(得分:1)
你遇到的问题是,当它在Tcl中运行时(我认识到这种跟踪格式),由于某种原因,Expect包(提供spawn
命令)不存在。要做的第一件事是通过取消注释package require
行来明确要求Expect包。这可能足以解决您自己的问题,但如果不是,它会抱怨包裹不可用。如果它不可用,则意味着它没有安装,或者它没有找到。前者......显而易见。 :-)后者通过在package require
:
lappend auto_path /full/path/to/Expect/package/installation
请注意,如果您使用 expect 程序而不是 tclsh 程序运行脚本,那么package require
将自动为您完成。你显然没有这样做......
答案 2 :(得分:0)
尝试在tcl解释器(!/ usr / bin / tcl)下运行并导入Expect。
答案 3 :(得分:0)
您是否在PC上安装了Expect?
请在您的PC上运行以下命令以检查Expect是否可用。
答案 4 :(得分:0)
分别运行以上命令。如果正确安装,则“哪个期望”将显示“ / usr / bin / expect”作为输出。安装后运行脚本,