閱讀112 返回首頁    go 技術社區[雲棲]


linux 批量建立信任關係

首先,需要檢查expect是否安裝:rpm -qa|grep expect

然後,在操作機上創建公鑰:ssh-keygen 一路回車即可

創建好之後到/home/barfoo/.ssh/下就可以看到id開頭的2個文件,其中id_rsa.pub就是公鑰文件,

需要做的就是將這個文件傳送給其他機器:ssh-copy-id -i /home/barfoo/.ssh/id_rsa.pub barfoo@ip

最後ssh root@ip就實現無密碼登錄了。

以下是腳本,根據自己實際情況做修

!/bin/bash

2017-05-18

批量ssh認證建立

for p in $(cat /home/barfoo/ip.txt) #注意ip.txt文件的絕對路徑
do
ip=$(echo "$p"|cut -f1 -d":") #取ip.txt文件中的ip地址
password=$(echo "$p"|cut -f2 -d":") #取ip.txt文件中的密碼

expect自動交互開始

expect -c "
spawn ssh-copy-id -i /home/barfoo/.ssh/id_rsa.pub barfoo@$ip
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"$password\r\"; exp_continue}
\"*Password*\" {send \"$password\r\";}
}
"
done

通過ssh批量執行命令

for h in $(cat /home/barfoo/ip.txt|cut -f1 -d":")
do
ssh barfoo@$h '此處寫要執行的命令'

如果命令是多行的,請參照下麵

ssh barfoo@$h '此處寫要執行的命令1'

ssh barfoo@$h '此處寫要執行的命令2'

ssh barfoo@$h '此處寫要執行的命令3'

done

ip.txt文件裏麵ip和密碼寫法

172.16.4.27:barfoo1
172.16.4.28:barfoo2

也可以這麼寫

!/bin/bash

for i in seq 101 150
do
/usr/bin/expect << EOF
spawn ssh-copy-id bfadmin@192.168.100.$i
expect {
"yes/no" { send "yes\r"; exp_continue; }
"*password" { send "bfadmin2017!@#\r" }
}

expect "~$ "
send "exit\r"
expect eof

EOF
done

最後更新:2017-05-23 13:32:00

  上一篇:go  Java網絡教程:URL + URLConnection
  下一篇:go  Java IO: 異常處理