格式:ssh user@ip command
單條命令:ssh user@ip command1
多條命令:ssh user@ip "command1;command2"
不加雙引號的情況 ssh user@ip command1 | command2: 其中command1在遠程機器上執行,command2在本機器執行
ssh user@ip "ip a | grep '{print \$2}'" 這種情況使用的話,要對$符號進行轉義
下圖所示,第一條命令:awk的命令功能並沒有生效,需要對$進行轉義;
第二條命令:\$轉義后生效,遠程直接返回匹配結果;
第三條命令:結果來看和第二條相同,其實,uname -a實在遠程機器執行,執行完的全部信息返回來,然后又在本地機器進行awk過濾
注意這種方式的ssh連接獲得的環境變量和登錄之后獲得的環境變量不一樣,所有,存在某些命令這種方式無法執行,但是登錄之后可以執行的情況,解決辦法是,給出命令行的絕對路徑
另外注意 ssh user@ip "cmd1 && cmd2" 和 ssh user@ip "cmd1 ; cmd2" 還有 ssh user@ip "cmd1 || cmd2"的區別:
&&表示前面執行成功后執行后面的命令,||表示執行失敗了執行后面的命令;“;”表示依次執行兩條命令
ssh user@ip "echo $PATH" 輸出的是本機PATH值;ssh user@ip "echo \$PATH" 輸出的是遠端ip的PATH值。
https://stackoverflow.com/questions/14707307/how-to-use-bash-awk-in-single-ssh-command