寫乙個指令碼,將跳板機上yunwei使用者的公鑰推送到區域網內可以ping通的所有機器上
說明:主機和密碼檔案已經提供
#!/bin/env bash
#判斷公鑰是否存在
[ ! -f /home/yunwei/.ssh/id_rsa ] && ssh-keygen -p '' -f ~/.ssh/id_rsa
#迴圈判斷主機是否ping通,如果ping通推送公鑰
ip=/home/yunwei/ip.txt
for i in `cat $ip`
do ip=`echo $i|cut -d: -f1`
pass=`echo $i|cut -d: -f2`
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo $ip >> /home/yunwei/ipup.txt
expect <<-eof &>/dev/null
spawn ssh-copy-id root@$ip
expect
"password" \n" }
}expect eof
eofelse
echo $ip >> /home/yunwei/ipdown.txt
fidone
wait
echo "公鑰已經推送完畢,正在測試...."
remote_ip=`tail -1 /home/yunwei/ipup.txt`
ssh root@$remote_ip hostname &>/dev/null
test $? -eq 0 && echo "公鑰成功推送完畢"
寫法二,支援併發
#!/bin/bash
#判斷公鑰是否存在
[ ! -f /home/yunwei/.ssh/id_rsa ] && ssh-keygen -p '' -f ~/.ssh/id_rsa
#迴圈判斷主機是否ping通,如果ping通推送公鑰
tr ':' ' ' < /home/yunwei/ip.txt|while read ip pass
do "password:"
}expect eof
endfi
}&done
wait
echo "公鑰已經推送完畢,正在測試...."
#測試驗證
remote_ip=`tail -1 ~/ip_up.txt`
ssh root@$remote_ip hostname &>/dev/null
test $? -eq 0 && echo "公鑰成功推送完畢"
利用Ansible 批量推送公鑰
yuminstall epel release 確保有擴充套件源 yum install ansible y ansible version ansible 2.9.6 配置檔案路徑config file etc ansible ansible cfg 查詢模組路徑configured module...
(九)expect批量公鑰推送
注意 注釋不能出現這指令碼裡面 spawn表示開啟乙個會話 r 表示回車,exp continue 表示沒有出現這樣,繼續往下執行 interact 停留在對面終端 usr bin expect spawn ssh root 192.168.111.101 expect password inter...
批量推送公鑰並且巡檢伺服器
這裡是寫了乙個判斷語句,首先判斷是否本地存在秘鑰目錄,如果不存在就產生金鑰對,並且將公鑰資訊進行推送到需要免密登入伺服器中,當然,因為是指令碼形式書寫,所以這裡所有的操作都是免互動進行,另外如果存在秘鑰目錄,這裡可以做乙個使用者互動,詢問使用者需要遠端到哪個伺服器,直接幫使用者遠端,並檢視伺服器的硬...