执行python-paramiko

时间:2013-04-25 11:22:38

标签: python paramiko

我正试图通过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,那么同样有效。

如何解决?

提前致谢

2 个答案:

答案 0 :(得分: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(. . .)

试试看它是否有效。

答案 1 :(得分: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上运行。