如何通过 ssh 在 bash cmd 中运行 python cmd

如何通过 ssh 在 bash cmd 中运行 python cmd

当我在 bash 终端中运行以下命令时,它工作正常。

$ bash -c "python -c \"print 'helloworld'\""---> 你好世界

然而,当我尝试通过 ssh 执行此操作时,它没有给我任何结果,有人可以帮助阐明这个问题吗?

$ ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""--> 没什么

答案1

ssh [email protected] "$(cat <<'EOT'
bash -c "python -c \"print 'helloworld'\""
EOT
)"

我有一个简单的函数/实用程序的想法,它应该有助于避免像这样的多个嵌入式命令的引用噩梦,请继续关注;-)

答案2

你引用的不对。你的命令

ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""

在远程端运行它:

bash -c "python -c "print 'helloworld'""

这相当于

bash -c "python -c print" 'helloworld'

它运行python -c print,打印一个空行。 (注:helloworld行为类似于.)


要正确引用,您需要更多反斜杠。这:

ssh [email protected] "bash -c \"python -c \\\"print 'helloworld'\\\"\""

在远程端运行以下命令:

bash -c "python -c \"print 'helloworld'\""

这正是你想要的。

查看关于超级用户的这个问题。它旨在为类似情况提供帮助。


bash -c您很可能根本不需要。此代码应该在本地 shell 中运行:

python -c "print 'helloworld'"

所以这可能会起作用:

ssh [email protected] "python -c \"print 'helloworld'\""

可能是因为 SSH 服务器将使用 meeee 选择的 shell 作为登录 shell 来运行命令。在某些特殊情况下,它可能无法python -c正常运行。但既然你期望它运行bash -c,它也应该运行python -c

相关内容