运行带有空格的远程 ssh 命令?

运行带有空格的远程 ssh 命令?

我正在尝试通过 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][...]

相关内容