【问题标题】:Python error while trying to run application on remote desktop尝试在远程桌面上运行应用程序时出现 Python 错误
【发布时间】:2015-01-20 15:39:37
【问题描述】:

我正在尝试运行以下脚本,该脚本将帮助我在远程 Windows 桌面上打开 SSH 连接并在该远程桌面上打开应用程序。读取错误缓冲区时出现错误:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('135.24.237.178',username = 'cyg_server',password = 'sandforce')

stdin,stdout,stderr = ssh.exec_command("C:\\Program Files\\Tensilica\\Xtensa    
OCD Daemon 9.0.3\\xt-ocd.exe")

stderr.readlines()
[u'bash: C:Program: command not found\n']

stdout.readlines()
[]

似乎我没有给出我想在远程 PC 上正确运行的应用程序的路径。谁能帮忙?

谢谢。

【问题讨论】:

    标签: python python-2.7 python-3.x ssh paramiko


    【解决方案1】:

    我猜您正在使用 cygwin 在 Windows 上提供您的 SSH 服务器。如果是这样,您应该通过 /cygdrive/c 引用您的路径。试试:

    ssh.exec_command("/cygdrive/c/Program\ Files/Tensilica/Xtensa\ OCD\ Daemon\ 9.0.3/xt-ocd.exe")
    

    实际上,您可能想要一个原始字符串,因为您需要将反斜杠传递给 cygwin.. 所以... 如果上述方法不起作用,请尝试...

    ssh.exec_command(r"/cygdrive/c/Program\ Files/Tensilica/Xtensa\OCD\ Daemon\ 9.0.3/xt-ocd.exe")

    【讨论】:

    • 你是对的,我正在使用 cygwin 在 wondows 上提供 SSH 服务器。另外,我尝试了您的两个代码。他们肯定工作到了一定程度。虽然没有弹出 xt-ocd.exe 的应用程序窗口,但是在远程 PC 任务管理器 -> 进程 es 中,每次我从 PyScripter 中点击你的 ssh 命令时,我都可以找到在后台运行的 xt-ocd.exe。因此,该过程正在启动,但应用程序窗口未打开。这仍然是最后一件事。
    • 您可能需要允许您的 sshd 服务与桌面交互。我将尝试追踪其中一台运行 cygwin sshd 的服务器,并为您提供更多信息。但是,作为一般规则,除非您明确允许,否则不允许服务与桌面交互,因此您没有看到窗口打开一点也不奇怪。
    • 跟踪我运行它的一台机器,并验证如果我更改服务属性以允许它与桌面交互,它会为我打开应用程序窗口。 (控制面板、管理工具、服务、CYGWIN ssd 服务、登录选项卡、允许服务与桌面交互。重启服务)。
    • 我很接近这个东西,再次向你致敬。我按照您的步骤说我正在尝试使用我的 PC 上的以下命令在远程桌面中打开 realvnc:ssh.exec_command("/cygdrive/c/Program\ Files/RealVNC/VNC4/vncviewer.exe") ..立即远程 PC 中弹出消息:“交互式服务检测”并显示“程序可能需要您提供的信息或您的许可才能完成任务”...我单击“查看消息”并打开一个窗口,但显示不正确...它是一个蓝屏,一个角落的交互式服务检测窗口要求我“立即返回”。
    • 您不是偶然将 RDP 加入到远程计算机中吧?因为如果您是,您所附加的桌面会话将不会是服务尝试显示其窗口的会话,该窗口可以解释正在发生的事情。
    【解决方案2】:

    尝试转义空间,如下所示:

    ssh.exec_command("C:\\Program\ Files\\...
    

    【讨论】:

    • 我试过了,它不能工作:stdin,stdout,stderr = ssh.exec_command("C:\\Program\Files\\Tensilica\\Xtensa\OCD\Daemon\9.0.3\ \xt-ocd.exe") stderr.readlines() [u'bash: C:ProgramFilesTensilicaXtensaOCDDaemon9.0.3xt-ocd.exe: 找不到命令\n']
    • 您现在在 Program 和 Files 之间缺少一个空格,对吧?
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多