2

イントラネット上のリモート ホストにコマンドを送信する Python Paramiko スクリプトがあります。一度に複数のホストにシャットダウン コマンドを送信したい場合があります。問題は、シャットダウン コマンドをバックグラウンドに設定しない限り、ただ座って待機することです。アンパサンドを使用してみました (上記のようにそのまま、またはエスケープ: \&)。ここに小さなテストプログラムがあります。私の OS は 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

意図したとおりに shutdown コマンドを使用して問題を解決しました。最初にアンパサンド (\&) をエスケープしないでください。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()
于 2013-09-12T12:18:04.403 に答える