gpt4 book ai didi

linux - 自动化 ssh 登录 : tcl expect interact command behaves weird

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:41 26 4
gpt4 key购买 nike

我想自动化 ssh 登录。经过一些研究,tcl/expect 似乎是可行的方法。

但是,我的问题是,当 interact 接管我的终端时,东西无法按预期工作(双关语不是故意的)。

例如,如果我调整终端的大小,它不会“占用”。此外,有时交互没有响应,有时它只是无缘无故地挂起。我在下面包含了我的代码。我对代码的问题是,我是否遗漏了什么?

此外,是否有更好的方法(使用另一种脚本语言?)我需要终端的响应速度非常快,这与我在控制台上手动键入 ssh 没有什么不同。

proc Login {username server password} {
set prompt "(%|>|\#|\\\$) $"

spawn /usr/bin/ssh $username@$server
expect {
-re "Are you sure you want to continue connecting (yes/no)?" {
exp_send "yes\r"
exp_continue
#continue to match statements within this expect {}
}

-nocase "password: " {
exp_send "$password\r"
interact
}
}
}

最佳答案

您提出的有关“交互”的问题没有注意到窗口的大小发生了变化,因为默认情况下,交互仅监视字符流。调整窗口大小时,会发出 WINCH 信号。默认情况下,Expect 有一个默认操作,即忽略它。您应该使用 Expect 的 trap 命令来捕获 SIGWINCH。然后你可以做你想做的事——例如,将新尺寸传播到另一边或采取一些其他本地行动。

您可以在 Expect 的示例脚本中找到执行此操作的示例。并且Expect书中有关于如何处理SIGWINCH的解释和例子。

关于linux - 自动化 ssh 登录 : tcl expect interact command behaves weird,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com