腳本中的SSH遠端命令執行

腳本中的SSH遠端命令執行

在我的腳本中我做了這樣的事情:

command="some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;"
ssh_command="ssh root@$ip '$command'"

echo $ssh_command
exec $ssh_command

echo 給出如下輸出:

ssh [email protected] 'some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;'

在“exec”之後我得到輸出:

bash: some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;: No such file or directory

但是,當從 echo 輸出複製命令並直接從終端運行它時,它的工作方式就像魅力一樣。有什麼想法嗎?

答案1

exec用程式取代 shell,並使用提供的參數呼叫它。 shell 看到 2 個標記:「exec」和「some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;」。第二個參數被解釋為要執行的程式的路徑,包括所有空格和分號。只有 shell 知道在空格上分割參數並在分號處分隔指令。因此,您應該將 替換exec為對 shell 的調用,例如sh -c "$ssh_command".

答案2

諾哈普可能對你有用。

嘗試從下面的連結整合類似的東西。

ssh -n -f 使用者@主機“SH-C'cd /任何地方; nohup ./whatever > /dev/null 2>&1 &'"

https://stackoverflow.com/q/29142/1666510

相關內容