ssh.exec_command(“shutdown -h 17:00&”)

时间:2013-09-11 19:04:42

标签: python linux paramiko

我有一个Python Paramiko脚本,可以将命令发送到内部网上的远程主机。有时我想立即将shutdown命令发送到多个主机。问题是shutdown命令只是坐着等待,除非你背景它。我曾尝试使用&符号(裸露如上,或转义:\&)。这是一个小测试程序。我的操作系统是RHEL Linux 5.9(Python 2.4.3)。请注意,sudoers禁用了某些用户的requiretty。

#!/usr/bin/python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("<hostname>",username="<my username>", password="<mypassword>")
stdin, stdout, stderr = ssh.exec_command("sudo /sbin/shutdown -h 17:00 \&")
stdin.write('\n')stdin.flush()
data = stdout.read().splitlines()
for line in data:
    print line

1 个答案:

答案 0 :(得分:1)

我已经按照预期使用shutdown命令解决了这个问题。首先不要逃避&符号(\&amp;)。由于shutdown命令不会向stdout返回任何内容,因此我只删除那些处理输出的行。想要在一段时间内使用关机的原因是用户通知。

#!/usr/bin/python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("<hostname>",username="<my username>", password="<mypassword>")
stdin, stdout, stderr = ssh.exec_command("sudo /sbin/shutdown -h 17:00 &")]
ssh.close()