運用ansible進行自動化運維之前,我們需要對所有機器進行SSH認證,運用下面腳本一鍵實現機器批量SSH免密登錄,務必保證批量機器為同一用戶同一密碼。
#!/bin/bash #批量實現SSH免密登錄 #沒有則安裝expect if ! rpm -q expect > /dev/null then echo "###expect 未安裝,現在安裝###" yum install -y expect &>/dev/null if [ $? -ne 0 ] then echo "###expect 安裝失敗###" exit 1 fi fi #本機沒有SSH密鑰則生成 if [ ! -f ~/.ssh/id_rsa ] then echo "###請按3次enter鍵###" ssh-keygen -t rsa fi ssh_expect () { expect -c "set timeout -1; spawn ssh-copy-id -f $1 expect { "yes/no" { send -- yes\r;exp_continue;} "password:" { send -- $2\r;exp_continue;} eof }"; } [ -f hosts.txt ] && rm -rf hosts.txt #定義 hosts.txt cat > hosts.txt << EOF 192.168.30.128 192.168.30.129 192.168.30.130 EOF passwd=123456789 for ip in `cat hosts.txt |awk '{print $1}'` do ssh_expect $ip $passwd done