linux - 使用expect后发送命令到远程机器

标签 linux expect

您好,我想从远程计算机收集一些有关进程的信息 然后,终止该进程。

我使用expect编写了一个脚本,我成功连接到远程机器 但我无法发送其他命令,例如“who”并获取输出:

#!/usr/bin/expect

spawn ssh -o StrictHostKeyChecking=no -o CheckHostIP=no aaa@1.2.4.5
expect "Password:"
send "aaa1"
interact
send "who\r"

有人可以建议一下吗? 基本上我对expect很陌生,所以我想这很简单,我可能错过了。

谢谢大家。

最佳答案

您不需要对此进行expect。您需要基于 key 的 SSH 登录。您可以通过运行 ssh-copy-id aaa@1.2.4.5 一次进行设置来实现此目的,然后您应该能够运行:

ssh aaa@1.2.4.5 who

并且它不应该提示输入密码,因为它将使用您的 SSH key 。当然,如果您之前从未有过 SSH key ,则可能需要在 ssh-copy-id 之前运行 ssh-keygen 或类似命令。

关于linux - 使用expect后发送命令到远程机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23912446/

相关文章:

linux - 任何通过 SSH 工作的 git repo 查看器?

linux - 无法使用 expect 脚本运行远程 ssh 命令

ssh - 期望脚本读取空行

linux - "expect"可能只回答一些问题?

LINUX - shell 脚本查找并列出所有有权在目录树中写入的文件

linux - 如果 $? 扫描整个代码= 0 或 1

linux - 如何在后台进程中运行 Linux 应用程序?

linux - 如何捕获变量中文件的最后修改日期

linux - 按预期生成 ssh 时的问题({$var} 与 "$var")

linux - 通过 cygwin 上的 Expect 脚本使用 ssh