【问题标题】:How to continue entering commands on SSH-server, using expect如何使用expect继续在SSH服务器上输入命令
【发布时间】:2016-07-23 13:35:27
【问题描述】:

我正在使用expect 连接我的 SSH 服务器:

#!/bin/expect

set command [lindex $argv 0]
set command_connect "connect"

proc connect {} {
    spawn ssh username@192.168.1.101
    expect "password"
    send "password\r"
    interact
}

if {$command == $command_connect} {
    connect
}

一切正常,我可以连接到服务器,但我无法输入命令!不知何故,所有命令都输入到我的计算机上!如果我尝试清除屏幕:

proc connect {} {
    spawn ssh username@192.168.1.101
    expect "password"
    send "password\r"
    spawn clear
    interact
}

然后我清除计算机上的屏幕并断开 SSH 连接(我返回控制台)!


为什么会发生这种情况以及如何继续在 SSH 服务器上输入命令?

【问题讨论】:

    标签: linux ssh tcl expect


    【解决方案1】:

    如果你想向远程服务器发送命令,那么你需要通过衍生的 SSH 进程发送它们:

    expect "$"
    send "clear\r"
    

    第一行是确保远程服务器上的提示出现。

    【讨论】:

    【解决方案2】:

    另外,因为您在一个过程中spawn,所以spawn_id 变量将具有本地 范围。如果您打算将连接封装在 proc 内部,但能够在过程之外使用衍生的进程,则需要将 global spawn_id 添加到过程主体。

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多