如何透過 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

相關內容