1. 程式人生 > >expect批量分發密鑰文件

expect批量分發密鑰文件

expect

在做批量分發的時候第一次是兩個腳本來完成,後來做了一個expect嵌套,完成了一個腳本進行集成

前提要求服務器需要安裝expect

[root@130 scripts]# yum -y install expect

腳本分析:

#!/bin/bash
key_file=‘/root/.ssh/id_dsa‘

####################### 判斷秘鑰文件是否存在 ######################
if [ -f $key_file ]
        then
echo "秘鑰文件已存在,準備下一步分發"
        else
ssh-keygen -t dsa -P ‘‘ -f /root/.ssh/id_dsa > /dev/null 2>&1
fi

####################### 批量分發秘鑰 #########################
for ip in {128..140}       
do
/usr/bin/expect  << EOF > /dev/null 2>&1
set password "root"
spawn  ssh-copy-id -i $key_file "-p 22 [email protected].$ip"
expect {
        "yes/no"        {send "yes\r";exp_continue}
        "*password"     {send "root\r"}
}
expect eof
EOF

####################### 顯示分發狀態 ##########################
if [ $? -eq 0 ]
        then
echo "192.168.222.$ip 秘鑰分發成功"
#echo 0
        else
echo "192.168.222.$ip 秘鑰分發失敗"
#echo 1
fi
done

腳本效果實現效果:

[root@130 scripts]# ./send_file 
秘鑰文件已存在,準備下一步分發
192.168.222.128 秘鑰分發失敗
192.168.222.129 秘鑰分發失敗
192.168.222.130 秘鑰分發成功
192.168.222.131 秘鑰分發成功
192.168.222.132 秘鑰分發成功
192.168.222.133 秘鑰分發失敗
192.168.222.134 秘鑰分發失敗
192.168.222.135 秘鑰分發成功
192.168.222.136 秘鑰分發失敗
192.168.222.137 秘鑰分發失敗
192.168.222.138 秘鑰分發失敗
192.168.222.139 秘鑰分發失敗
192.168.222.140 秘鑰分發失敗

!!!顯示分發成功的服務器就可以直接無密碼在服務器上進行登陸了

本文出自 “小小小平凡” 博客,謝絕轉載!

expect批量分發密鑰文件