2

我有一个 Python Paramiko 脚本,可以将命令发送到 Intranet 上的远程主机。有时我想一次将关闭命令发送到多个主机。问题是关闭命令只是坐下来等待,除非您将其作为背景。我尝试过使用 & 符号(如上所示,或转义:\&)。这是一个小测试程序。我的操作系统是 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
4

1 回答 1

1

我已经按照预期使用关机命令解决了这个问题。首先不要转义与号 (\&)。由于关闭命令不会向标准输出返回任何内容,因此我只是删除了那些处理输出的行。想要使用关机时间的原因是为了用户通知。

#!/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()
于 2013-09-12T12:18:04.403 回答