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

在本地使用 ssh $RemoteNode  <cmd>  能夠在執行遠程機器上的命令,例如 ssh  user@node ls /local  會執行遠程機器上的 ls /local 命令,若是想在遠程機器上連續執行多條命令,能夠用單引號或者雙引號將這些命令括起來, node

例如:ssh  user@node "cd  /local; pwd;ls" shell

若是想在本地啓動遠程機器上的命令後就返回來,能夠這樣 ssh  user@node " /local/x.sh  1>/dev/null  2>&1 & " ssh

注意若是沒有「」,例如 ssh  user@node  cd /local ; ls   則 ls 只會執行 cd /local 命令,ls命令在本地執行,加了雙引號或者單引號,則被括起來的命令被當作ssh命令的一個參數,因此會在遠程連續執行。 spa

 

單引號和雙引號在ssh命令中的區別: .net

以一個例子來講明問題, blog

假設本地機器上配置了JAVA環境變量,在本地執行 echo $JAVA_HOME=/opt/jdk 字符串

倘若我想查看遠程機器上的JAVA環境變量,則只能使用單引號了,ssh  user@node ' echo $JAVA ', 則是' ' 中的$JAVA不會被shell解析,而是當作一個字符串,此時參數 echo $JAVA 傳遞給了 ssh; get

若是咱們使用 ssh  user@node 」 echo $JAVA ",則 shell 首先會解析$JAVA,獲得它的值,則該命令就變成了 ssh  user@node ' echo /opt/jdk ' 了 cmd

 ref : http://blog.csdn.net/zklth/article/details/6289677

相關文章
相關標籤/搜索