我正在尝试通过 ssh 在 Windows 中运行远程脚本,但我不知道如何处理引号。(主机和客户端都是 Windows 计算机。)这是在主机上运行良好的语句:
C:\> python "C:\folder path\file.py"
我似乎到处都找过了,似乎什么都试过了,但我无法让它发挥作用:
C:\> ssh user@ipaddress "python ""C:\folder path\file.py"""
python: can't open file 'C:\folder': [Errno 2] No such file or directory
我尝试过使用双引号,尝试过单引号,尝试过使用 '\' 作为转义字符,尝试过 '^',但似乎都无法正确传递字符串。有什么帮助吗?!
编辑:一位用户建议我使用 ssh 的“-v”来跟踪路径。这样做,看起来双引号确实起到了我所期望的作用,但不知何故,主机误解了命令,并反对该空间。不知道为什么……
为了清楚起见,使用这个:
C:\> ssh -v user@ipaddress "python ""C:\folder path\file.py"""
我在结果中看到了这一点:
debug1: Sending command: python "C:\folder path\file.py"
python: can't open file 'C:\folder': [Errno 2] No such file or directory
再次说明一下,当我在主机上时,此命令可以完美运行:
C:\> python "C:\folder path\file.py"
所以,我不清楚为什么/哪里出了问题。谢谢大家的帮助,到目前为止,你们的帮助都很大。
答案1
我发现这对我有用,尽管它与路径无关,但与服务有关:
ssh username@ipaddress 'net start \"TightVNC Server\"'
答案2
OpenSSHssh
是 *nix 应用程序,因此在解析其命令行时适用 *nix 规则
ssh user@ipaddress "python \"C:\folder path\file.py\""
答案3
我已经设置主机和客户端都在 Windows 上运行 git bash,并且服务器上的 openssh 默认 shell 设置为 git bash。
我需要跑
ssh username@ipaddress 'rm -rf TESTING'
但是,当使用 请求伪终端时-t
,我需要额外的双引号:
ssh -t username@ipaddress '"rm -rf TESTING"'
有趣的是,只有使用 -t 标志时运行才有效,如果没有该标志,运行就会无限期地停止。git clone [email protected][...]