2016-04-05 15 views
1

私はparamikoを外部マシン上でスクリプトを実行させて終了させようとしていますが、スクリプトを実行するには問題があります。誰もがスクリプトを実行していない理由を知っていますか? VM上でコマンドマニュアルを実行しようとしましたが、それはうまくいきました。Paramikoスクリプトを実行して終了します

command = "/home/test.sh > /dev/null 2>&1 &" 

def start_job(host): 

    try: 
     client = paramiko.SSHClient() 
     client.load_system_host_keys() 
     client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

     client.connect(hostname, port=22, username=username, password=password) 
     return client.exec_command(command) 

    finally: 
     client.close() 

start_job(hostname) 

答えて

1

まず、引数またはclient.connect()への第一のparamのいずれかにstart_job機能にタイプミスがあります。それ以上に、単に接続を閉じる前stdout/stderr内容を返す:あなたのケースで

def start_job(hostname): 

try: 
    client = paramiko.SSHClient() 
    client.load_system_host_keys() 
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

    client.connect(hostname, port=22, username=username, password=password) 
    (_, stdout, stderr) = client.exec_command(command) 
    return (stdout.read(), stderr.read()) 

finally: 
    client.close() 

コマンドが標準出力に標準エラー出力をリダイレクトして、私は2つの空の文字列が、何も返されないことを期待していないので、バックグラウンドで実行されています戻る:

start_job(hostname) 
('', '') 
関連する問題