You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH在Windows机器上运行.exe文件无响应问题排查

问题分析与解决办法

你的问题主要出在SSH远程执行Windows命令时的shell语法差异以及命令的引号/路径处理上,我帮你拆解下问题点和修复方案:

核心问题拆解

  • Windows cmd与类Unix shell的语法差异:你用了分号;分隔命令,但Windows默认shell(cmd.exe)里的命令分隔符是&(顺序执行)或&&(前命令成功才执行后命令),分号在cmd中是无效的,导致cd和exe执行命令没有按预期连续运行。
  • 路径写法错误:Windows cmd中,当前目录的可执行文件不需要加./,直接写File.exe即可;如果要显式用相对路径,应该用.\File.exe(cmd的当前目录标识是.)。
  • 引号嵌套与转义问题:你在os.system里用双引号包裹整个SSH命令,内部又用双引号括exe命令,会导致本地shell解析时引号被破坏,远程机器收到的命令可能不完整。

修复后的几种可行方案

方案1:直接指定exe完整路径(最简洁)

跳过切换目录的步骤,直接写exe的全路径,避免工作目录的问题:

os.system('ssh remote@ip "C:/path/to/File/File.exe Arg1 Arg2"')

用单引号包裹整个SSH命令,内部双引号确保Windows端的命令和参数被正确解析。

方案2:用cmd的命令分隔符&连续执行命令

如果必须先切换目录,改用cmd支持的&来串联命令:

os.system('ssh remote@ip "cd C:/path/to/File & File.exe Arg1 Arg2"')

双引号包裹整个命令块,确保远程cmd.exe能正确识别连续执行的两个命令。

方案3:显式调用cmd.exe执行(适配不同默认shell)

部分OpenSSH for Windows环境会默认用PowerShell作为远程shell,这时可以显式指定用cmd解析命令:

os.system('ssh remote@ip "cmd /c cd C:/path/to/File & File.exe Arg1 Arg2"')

cmd /c表示执行完命令后退出cmd,确保命令按cmd语法执行。

额外排查小技巧

如果exe运行后无任何反馈(比如是GUI程序或后台进程),可以把输出和错误重定向到文件排查:

os.system('ssh remote@ip "C:/path/to/File/File.exe Arg1 Arg2 > C:/temp/output.txt 2>&1"')

之后远程查看C:/temp/output.txt就能看到执行日志或错误信息。

内容的提问来源于stack exchange,提问作者unholy_me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:21:00