【问题标题】:how to use spawn command in TCL如何在 TCL 中使用 spawn 命令
【发布时间】:2011-04-17 15:08:40
【问题描述】:

我正在使用以下代码

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

我的代码有什么问题

【问题讨论】:

  • 如何调用脚本?如果您致电tclsh script,则需要取消注释包要求。

标签: tcl expect


【解决方案1】:
  1. sudo apt-get update -y
  2. sudo apt-get install -y 期望
  3. 期待

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

【讨论】:

    【解决方案2】:

    在 package 需要 Expect 之前删除 '#'。

    【讨论】:

      【解决方案3】:

      您是否在 PC 上安装了 Expect?

      请在您的 PC 上运行以下命令以检查 Expect 是否可用。

      $期望

      /usr/bin/expect

      【讨论】:

        【解决方案4】:

        您遇到的问题是,当它在 Tcl 中运行时(我认识这种跟踪格式),由于某种原因,Expect 包(它提供了spawn 命令)不存在。首先要做的是通过取消注释 package require 行来明确对 Expect 包的要求。这本身可能足以解决您的问题,但如果没有,它会抱怨该软件包不可用。如果它不可用,则意味着它只是没有安装,或者它没有被发现。前者……很明显可以修复。 :-) 后者可以通过在 package require 之前添加这样一行来解决:

        lappend auto_path /full/path/to/Expect/package/installation
        

        请注意,如果您使用 expect 程序而不是 tclsh 程序运行脚本,package require 将自动为您完成。你显然没有这样做……

        【讨论】:

        • 从 CMD 安装 Expect 如下:teacup install Expect
        【解决方案5】:

        尝试在 tcl 解释器 (!/usr/bin/tcl) 下运行并导入 Expect。

        【讨论】:

        • "!/usr/bin/tcl" 不是标准的 Tcl 安装;曾经有一段时间,TclX 并不少见。 "import Expect" 不是 Tcl 中的标准命令。
        • 你用package require在Tcl中“导入”东西。当我从源代码编译 Tcl 并且不告诉它应该去哪里然后 tclsh 它被安装为 /usr/bin/tclsh。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 2014-06-18
        • 2022-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多