linux - 在 "expect"命令之后有没有办法到 "send"和 "interact"

标签 linux shell tcl expect

所以我需要在我的 stdout 上输出远程进程,但我还需要能够“收听”它,并在匹配我的关键字后发送命令。

我需要这样的东西(我知道这段代码不正确,它的唯一目的是说明我需要什么)

#!/usr/bin/expect
log_user 0
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "Password:" {send "mypassword\r"}
interact
expect "mykeyword" {send "\003\177\015"}

最佳答案

如果我没记错的话,你这样做:

#!/usr/bin/expect
log_user 0
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "Password:" {send "mypassword\r"}
interact {
     "mykeyword" {
         send "\003\177\015"
         exp_continue
     }
}

您将要注意的事情和要采取的操作作为参数传递给 interact(就像 expect 一样),然后将响应脚本告诉 exp_continue 在最后,以便它继续交互/期待。

关于linux - 在 "expect"命令之后有没有办法到 "send"和 "interact",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737280/

相关文章:

shell - ubuntu 脚本从一个目录 cp 到另一个目录

postgresql - postgres (8.3),在函数中使用查询结果

python - 使用 tkinter 时如何将 tcl 中的 stdout 获取到 python 字符串变量中?

linux - 如何让 grep -m1 在 OSX 中工作

PHP popen 应用程序无法打开共享对象

regex - Bash - Sed/Awk 用新行替换字符串

bash - Unix 将不同的命名值解析为单独的行

linux - 在 tcl 中复制和替换文件

linux - ssh 连接在 Raspberry Pi 上被拒绝

linux - RedHat Linux (RHEL) 终端命令手册