【问题标题】:Python - Paramiko isn't running a remote script properlyPython - Paramiko 没有正确运行远程脚本
【发布时间】:2017-06-05 16:36:59
【问题描述】:

我正在尝试通过 SSH 在远程计算机上运行脚本(该脚本位于远程计算机上)。但是,当我运行 Paramiko 时,我所做的只是:

ssh = paramiko.SSHClient()
ssh.connect(-----blacked out-----)
ssh.exec_command("python script.py")

但它甚至没有执行命令。该脚本仅运行几个命令行命令。如果我通过远程计算机的终端在远程计算机上运行 script.py 文件,它就可以正常工作,但是当我尝试使用 ssh 像上面的 paramiko 那样执行它时,它就不行了。

【问题讨论】:

    标签: python python-2.7 subprocess paramiko


    【解决方案1】:

    您可能需要将完整路径传递给 python 和/或脚本,有时当不在终端/交互 (tty) 模式下执行时,找不到路径,因为它不会加载您在运行期间加载的配置文件脚本交互式外壳。

    【讨论】:

      【解决方案2】:

      如果没有任何信息,我猜它会输出您未阅读的信息,因此它会阻塞并等待您阅读...这就像在另一边没有任何内容时回显到管道中...

      我建议查看http://stackoverflow.com/a/32758464

      【讨论】:

        【解决方案3】:

        我也遇到过类似的问题。就我而言,我正在从 ps1 文件执行另一个进程,并且 ps1 文件在 ssh.exec_command() 函数中给出。 我的代码流是

        ssh = paramiko.SSHClient() 
        ssh.connect(Host, Port, Username, Passsword)    
        ssh.exec_command(run.ps1) 
        
        # ----------------------
        # As per the Expectation : 
        #  -> run.ps1 will execute on remote 
        #  -> run.ps1 contains "start-process notepad.exe" 
        #  -> So, it should spawn a  fresh notepad process
        # ----------------------
        

        但是,notepad.exe 没有在远程系统上启动

        我参考其他解决方案进行了以下更改:

        • 将所有单个文件路径转换为绝对路径。
        • 在 run.ps1 文件中添加了一个等待,直到子进程完成其执行
        • 在 exec_command 中传递的参数为 "powershell.exe -File Absolute/path/of/file.ps1"
        • 将日志文件保存到 paramiko 代码中为 paramiko.util.log_to_file('sssh.log')

        这次我可以看到 Notepad.exe 正在后台运行

        希望对上述问题有所帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-07
          • 2019-08-16
          • 2010-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-05
          • 1970-01-01
          相关资源
          最近更新 更多