背景:
公司遠端n臺機器需要執行同一指令碼,確認指令碼對所有需要執行的機器都有效安全,可以使用如下命令。
ch_sudo.sh為需要執行的指令碼名稱
ssh root@伺服器ip位址 "bash" < ch_sudo.sh
如果機器很多,可以寫乙個迴圈指令碼,對所有ip位址的機器迴圈執行。
ssh test@ip sh /root/test.sh
參考:ssh的-t引數
-t force pseudo-tty allocation. this can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. multiple -t options force tty allocation, even if ssh has no local tty.
中文翻譯一下:就是可以提供乙個遠端伺服器的虛擬tty終端,加上這個引數我們就可以在遠端伺服器的虛擬終端上輸入自己的提權密碼了,非常安全
命令格式
ssh -t -p $port $user@$ip 'cmd'
示例指令碼
#!/bin/bash
#變數定義
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
#本地通過ssh執行遠端伺服器的指令碼
for ip in $
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done
後記這個方法還是很方便的,-t虛擬出乙個遠端伺服器的終端,在多台伺服器同時部署時確實節約了不少時間啊!
用ant執行遠端linux指令碼
2 儲存一下內容,命名為build.xml在d anthome目錄下 3 把jsch.jar複製到d anthome下 4 執行 ant lib d anthome 5 顯示 sshexec sshexec connecting to 172.10.10.89 22 sshexec cmd cd l...
linux中利用shell指令碼條件執行命令
在linux環境中,我們總會有一些命令需要經常用,例如經常跳轉到某些目錄下或者執行某些命令,輸入一連串的命令是很煩的,此時我們可以預先寫一些指令碼然後根據我們的選擇自動執行命令,那豈不是完美,本指令碼就是為此而生的 以跳轉不同的目錄舉例,當然也可以執行其他命令,這時候只需要模擬寫shell命令即可 ...
在遠端伺服器上執行本地的shell指令碼
1 使用ssh實現 ssh user hostname c bin bash test.sh2 使用expect實現 採用的策略就是先在本地通過expect把shell指令碼推送到遠端伺服器上,之後再用expect模擬登入之後,先給遠端的shell指令碼許可權,然後再執行指令碼,最後刪除指令碼就ok...