需要通过SSH在Python中向服务器发送命令的帮助

0 投票
4 回答
1894 浏览
提问于 2025-04-16 00:18

我正在尝试通过ssh连接到服务器,并把“df -h”的输出结果保存到一个文本文件里。

p=pexpect.spawn('ssh some.some.com')

i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==0:
    print "I say yes"
    p.sendline('yes')
    i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==1:
    p.sendline("somesome")
    p.expect(pexpect.EOF)
    i = p.sendline('df -h > /home/test/output.txt')
    print i
    response = p.before
    print response

print p.before

我想连接到服务器,把服务器的数据保存到一个文本文件中。 我遇到的问题是,i = p.sendline('df -h > /home/test/output.txt') 这行代码没有任何反应, 也就是说我的输出文件是空的。 请帮帮我。

谢谢。

4 个回答

1

如果你发现自己经常通过ssh远程连接到同一台机器上工作,那么你可以考虑使用一些工具,比如func

1

看起来你在这里把Python当成了命令行来用。为什么不把相关的命令保存到一个bash文件里,然后一次性运行这个文件呢?我觉得这样会更好用。我还建议你启用SSH公钥认证,这比用密码要好用。可以使用subprocess模块在Python内部启动其他进程。

不过如果你真的有特殊原因需要这样做,那这些建议可能就没什么帮助了。

3

你可能想用 paramiko 来管理通过SSH连接的操作。

撰写回答