Bash

如何通過 ssh 在 bash cmd 中執行 python cmd

  • April 5, 2020

當我在我的 bash 終端中執行以下命令時,它工作正常。

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

但是,當我嘗試通過 ssh 執行此操作時,它什麼也沒給我,有人可以幫助闡明這個問題嗎?

$ ssh meeee@10.145.70.90 "bash -c \"python -c \"print 'helloworld'\"\""–> 沒有

你引用的不對。你的命令

ssh meeee@10.145.70.90 "bash -c \"python -c \"print 'helloworld'\"\""

在遠端端執行它:

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

這相當於

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

執行python -c print,它列印一個空行。(注意:helloworld這樣操作。)


要正確引用,您需要更多的反斜杠。這:

ssh meeee@10.145.70.90 "bash -c \"python -c \\\"print 'helloworld'\\\"\""

在遠端端執行以下命令:

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

這正是你想要的。

在 Super User 上檢查這個問題。它旨在在類似情況下提供幫助。


你很可能根本不需要bash -c。此程式碼應在本地 shell 中工作:

python -c "print 'helloworld'"

所以這可能會起作用:

ssh meeee@10.145.70.90 "python -c \"print 'helloworld'\""

可能是因為 SSH 伺服器將使用 meeee 選擇的 shell 作為其登錄 shell 來執行命令。在某些特殊情況下,它可能無法python -c正常執行。但既然你期望它執行bash -c,它也應該執行python -c

ssh meeee@10.145.70.90 "$(cat <<'EOT'
bash -c "python -c \"print 'helloworld'\""
EOT
)"

我有一個簡單的功能/實用程序的想法,它應該有助於避免像這樣的多個嵌入式命令的引用噩夢,敬請期待;-)

引用自:https://unix.stackexchange.com/questions/577992