所以我需要在我的 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/