在做批量分发的时候第一次是两个脚本来完成,后来做了一个expect嵌套,完成了一个脚本进行集成
前提要求服务器需要安装expect
[[email protected] 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
脚本效果实现效果:
[[email protected] 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 秘钥分发失败
!!!显示分发成功的服务器就可以直接无密码在服务器上进行登陆了
时间: 2024-10-24 20:59:12