0

Pythonを介してリモートマシンにコマンドを実行しようとしています

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(SERVER_IP, username='root', password='xxxxx')
    stdin, stdout, stderr = ssh.exec_command(
        "tar -C /home -xzf /home/Tests.tar.gz;dos2unix /home/Tests/run.py;chmod +x /home/Tests/run.py;/home/Tests/run.py>/home/Tests/log.txt"
    )

最後のコマンド/home/Tests/run.py>/home/Tests/log.txtが機能していないようで、値がありません。リモートマシンの端末でlog.txt行うと、同じことがうまく機能します。/home/Tests/run.py>/home/Tests/log.txt

それを解決する方法?

前もって感謝します

4

2 に答える 2

1

次のようにクライアントをセッションに転送していません。

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(SERVER_IP, username='root', password='xxxxx')
#note the next line you are missing
ssh_session = ssh.get_transport().open_session()

次に (ssh_session の宣言後) を使用できますssh_session.exec_command(. . .)

それが機能するかどうか試してみてください。

于 2015-09-11T20:28:40.100 に答える
0

コードが機能し、接続が確立されていることを確認するparamikoには、次のような簡単なことを試してください

stdin, stdout, stderr = ssh.exec_command("hostname")

stdin期待どおりのものが含まれていることを確認してください。次に、リモートで実行しているコマンドをデバッグしてみましょう:

$ tar -C /home -xzf /home/Tests.tar.gz
$ dos2unix /home/Tests/run.py
$ chmod +x /home/Tests/run.py
$ /home/Tests/run.py > /home/Tests/log.txt

通常の接続を介して削除されたマシンでコードを実行する場合、それが正常に動作するようにするには、ssh期待どおりに実行する必要がありますparamiko

于 2013-04-25T13:20:05.147 に答える