????????在實(shí)際運(yùn)用中在當(dāng)前服務(wù)器執(zhí)行命令后,需要在另一臺服務(wù)器繼續(xù)執(zhí)行某些命令,分開去到另一臺服務(wù)器執(zhí)行也是比較麻煩的,因此整理下集中執(zhí)行的方式
1、首先配置ssh免密操作
Linux 下實(shí)現(xiàn)SSH互信:http://www.itdecent.cn/p/2456d98aa607
2、簡單命令
ssh root@192.168.1.1 "cd /var/lib; ls; cd "
2.1 使用時(shí)注意,雙引號必須有。若沒加雙引號,第二條及之后的命令會(huì)在本地執(zhí)行
2.2 分號是將兩條語句間隔開
2.3 單雙引的區(qū)別:單引號不會(huì)解析值,是什么就傳什么;雙引號會(huì)解析值,將解析結(jié)果傳過去
3、多條命令
? ? ?ssh root@192.168.1.1<< reallssh
? ? ? cd /var/lib/test
? ? ? tar -zxvf api.com.tar.gz
? ? ? ......
? ? ? exit
? ? ? reallssh
3.1 命令寫在 <<?reallssh(開始) 至 reallssh(結(jié)束) 之間
3.2?reallssh可自己定義為其他形式
3.3 在結(jié)束前加上exit退出遠(yuǎn)程
4、可能遇到的問題
問題:遠(yuǎn)程登錄主機(jī)時(shí)出現(xiàn)Pseudo-terminal will not be allocated because stdin is not a terminal. 錯(cuò)誤
解決方案:字面意思是偽終端將無法分配,因?yàn)闃?biāo)準(zhǔn)輸入不是終端。
所以需要增加-t -t參數(shù)來強(qiáng)制偽終端分配,即使標(biāo)準(zhǔn)輸入不是終端。
to force pseudo-tty allocation even if stdin isn’t a terminal.
參考樣例如下:
ssh -t -t?user1@192.168.1.1 -p 22
--------------------------------------------------------------------------------
參考:https://blog.csdn.net/jinking01/article/details/84386769