您好我想从远程机器收集有关进程的一些信息 在它之后,杀死这个过程。
我用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"
有人可以建议吗?
基本上我是期待的新人,所以我想这很简单,我可能会失踪。
谢谢大家。
答案 0 :(得分:0)
您不需要expect
。您需要基于密钥的SSH登录。您可以通过运行ssh-copy-id aaa@1.2.4.5
一次来设置它来实现这一点,之后您应该能够运行:
ssh aaa@1.2.4.5 who
它不应该提示输入密码,因为它将使用您的SSH密钥。当然,如果你从未使用过SSH密钥,那么在ssh-copy-id之前可能需要运行ssh-keygen或类似代码。
答案 1 :(得分:0)
正如约翰指出的那样,也许你根本就不需要期待。如果你仍然想使用expect,那么这样的事情可能有用:
#!/usr/bin/expect
spawn ssh username@host
expect "*?assword:*"
send -- "yourPasswordHere\r"
send -- "\r"
expect eof
期待PATTERN等到PATTERN匹配。在您的情况下,找不到模式“密码:”,但会找到更宽松的模式“?assword:”。通常你的ssh客户端会以下列形式询问你:
username@host's password: