我有一个 Python Paramiko 脚本,可以将命令发送到内部网上的远程主机。有时我想一次向多个主机发送关闭命令。问题是 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
最佳答案
我已经按预期使用 shutdown 命令解决了这个问题。首先不要转义符号 (\&)。由于 shutdown 命令不会向 stdout 返回任何内容,因此我只是删除了处理输出的那些行。想要使用 shutdown with a time 的原因是为了通知用户。
#!/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()
关于python - ssh.exec_command ("shutdown -h 17:00 &"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18749270/