Shell-Script

通過 ssh 命令執行轉義引號和撇號

  • May 28, 2019

我想通過 ssh 執行以下命令:

echo "trap '/tmp/test &' 2 9" >> /tmp/output.txt

我正在嘗試執行以下操作:

ssh 127.0.0.1 -T "echo "trap '/tmp/test &' 2 9" >> /tmp/output.txt"

我正在使用python子程序如下:

command = "echo \"trap '/tmp/test &' 2 9\" >> /tmp/output.txt"
addtrap = 'ssh root@' + rhost + ' -T "' + command + '"'
subprocess.Popen(addtrap, shell=True)

但是,顯然,我在引號和撇號方面遇到了一些錯誤。有什麼辦法可以避免這個問題?

一種可靠的方法是:

ssh 127.0.0.1 sh << "EOF"
echo "trap '/tmp/test &' INT" >> /tmp/output.txt
EOF

然後你知道你得到了什麼shell,sh而不是遠端使用者的登錄shell,無論它是什麼,你可以很容易地傳遞程式碼sh來逐字解釋,而不必擔心引用。

(順便說一句,您幾乎不想使用-T。您可能想使用-t,但僅用於執行互動式應用程序vi或互動式外殼;信號 9,通常 SIGKILL 不能被擷取,最好使用信號名稱而不是數字)。

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