Shell-Script
通過 ssh 命令執行轉義引號和撇號
我想通過 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 不能被擷取,最好使用信號名稱而不是數字)。