天天看點

ssh 多條指令執行

格式: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連接配接獲得的環境變量和登入之後獲得的環境變量不一樣,所有,存在某些指令這種方式無法執行,但是登入之後可以執行的情況,解決辦法是,給出指令行的絕對路徑

另外注意 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值。