linux - 如何使用expect继续在SSH服务器上输入命令

标签 linux ssh tcl expect

我正在使用 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 服务器上输入命令?

最佳答案

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

expect "$"
send "clear\r"

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

关于linux - 如何使用expect继续在SSH服务器上输入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542379/

相关文章:

linux - 如何添加 Nagios 自定义状态

linux - 如何对以减号开头且包含空格的文件执行 sh 脚本?

linux - Tcl打开文件然后读取,添加的连线字符在原始文件中不存在

TCL 数组索引 - 规范是什么

linux - 将参数传递给模块文件中的 set-alias

linux - 在 shell 脚本中发送包含多个文件的邮件

linux - 没有尾部斜杠的目录列表 "/"

bash - 跳转服务器的 SSH 和身份文件

git - 在 Git 上执行 shell 命令时如何指定要使用的私有(private) SSH key ?

ssh - 无法在 Jelastic 环境的 native 模板中使用 root 用户登录