如何在TCL中使用spawn命令

时间:2010-09-27 06:54:28

标签: tcl expect

我正在使用以下代码

#!/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)

我的代码中出现了错误

5 个答案:

答案 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是否可用。

$期待

的/ usr /斌/期望

答案 4 :(得分:0)

  1. sudo apt-get更新-y
  2. sudo apt-get install -y Expect
  3. 期望

分别运行以上命令。如果正确安装,则“哪个期望”将显示“ / usr / bin / expect”作为输出。安装后运行脚本,