本地shell腳本中ssh到遠(yuǎn)程服務(wù)器并執(zhí)行命令

????????在實(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容