寫這篇部落格之前,我google了一堆相關文章,大都是說修改/etc/sudoers,然後nopasswd:指定的cmd,但是真心不管用,沒有遠端虛擬終端這個方法就是浮雲,ubuntu10.04 server 親測!!
ssh執行遠端操作
命令格式
複製** **如下:
ssh -p $port $user@$p 'cmd'
$port : ssh連線埠號
$user: ssh連線使用者名稱
$ip:ssh連線的ip位址
cmd:遠端伺服器需要執行的操作
準備工作
基於公私鑰認證或者使用者名稱密碼認證能確保登入到遠端local2伺服器(有點基本運utznomj維知識的人做這個事情都不是問題)
cmd如果是指令碼,注意絕對路徑問題(相對路徑在遠端執行時就是坑)
不足這個命令可以滿足我們大多數的需求,但是通常運維部署很多東西的時候需要root許可權,但是有幾處限制:
遠端伺服器local2禁止root使用者登入
在遠端伺服器指令碼裡轉換身份用expect需要send密碼,這樣不夠安全
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@$i程式設計客棧p 'cmd'
示例指令碼
複製** **如下:
#!/bin/bash
#變數定義&nbutznomjsp;
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虛擬出乙個遠端伺服器的終端,在多台伺服器同時部署時確實節約了不少時間啊!
本文標題: ssh遠端執行命令方法和shell指令碼例項
本文位址: /os/linux/122877.html
ssh遠端執行命令
使用ssh不僅可以登入到遠端的linux主機,還可以執行命令。如果是要登入到遠端linux主機,那麼使用下面的命令 ssh username remoteip example ssh hduser 192.168.0.1 這個將開啟乙個登入到遠端主機192.168.0.1的login shell如果...
ssh遠端執行命令
1.遠端執行普通命令 ssh username ip cmd1 cmd2 多條命令間用分號分割 ssh l username 192.168.1.1等同於 ssh username 192.168.1.1 2.遠端執行需要互動的命令 例如top命令,直接執行ssh username ip top 會...
模擬ssh遠端執行命令
目錄python從入門到放棄完整教程目錄 from socket import import subprocess server socket af inet,sock stream server.bind 127.0.0.1 8000 server.listen 5 print start.whi...