SSH在本地執行遠程機器上的命令

在本地使用 ssh $RemoteNode <cmd>  可以在執行遠程機器上的命令.
例如 ssh  user@node  ls /local  會執行遠程機器上的 ls /local 命令.


如果想在遠程機器上連續執行多條命令,可以用單引號或者雙引號將這些命令括起來, 
例如:ssh  user@node  "cd  /local; pwd;ls"
 
如果想在本地啓動遠程機器上的命令後就返回來,
可以這樣 ssh  user@node  "/local/x.sh  1>/dev/null  2>&1 &"
 
注意如果沒有“”,例如 ssh user@node cd /local; ls   
則 ls 只會執行 cd /local 命令,ls命令在本地執行,
加了雙引號或者單引號,則被括起來的命令被當做ssh命令的一個參數,所以會在遠程連續執行。
 
單引號和雙引號在ssh命令中的區別: 
以一個例子來說明問題,
假設本地機器上配置了JAVA環境變量,在本地執行 echo $JAVA_HOME=/opt/jdk
假若我想查看遠程機器上的JAVA環境變量,則只能使用單引號了,
ssh user@node 'echo $JAVA ', 
則是' ' 中的$JAVA不會被shell解析,而是當做一個字符串,此時參數 echo $JAVA 傳遞給了 ssh;
如果我們使用 ssh  user@node  ” echo $JAVA ",
則 shell 首先會解析$JAVA,得到它的值,則該命令就變成了 ssh  user@node  ' echo /opt/jdk ' 了
發佈了52 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章