介绍
基本信息
作者:朱明宇
名称:批量实现本电脑免密码 SSH 多个服务器
作用:将主本机的 SSH 公钥批量拷贝给其他多个远程服务器
使用方法
1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本
脚本分割线里的变量
1. nm=192.168.4.0 #网段,网段必须为 C 类网段,请保证格式和前 3 个网络位一定正确
2. sip=50 #起始 IP 地址,IP 地址 的范围是 0-255
3. lip=57 #结束 IP 地址,IP 地址 的范围是 0-255
4. pd=123456 #其他服务器的 root 远程登录密码
脚本
#!/bin/bash
####################### Separator ########################
nm=192.168.4.0
sip=50
lip=57
pd=123456
####################### Separator ########################
fnm=${nm%.*}
set timeout 3
rpm -q expect
if [ $? -ne 0 ];then
yum -y install expect &> /dev/null
fi
cat /root/.ssh/id_rsa &> /dev/null
if [ $? -ne 0 ];then
expect << EOF
spawn ssh-keygen
expect "(/root/.ssh/id_rsa):" {send "\r"}
expect "(empty for no passphrase):" {send "\r"}
expect "passphrase again:" {send "\r"}
expect "#" {send "\r"}
EOF
fi
for i in `seq $sip $lip`
do
echo $fnm.$i
ping -c3 -i0.3 -w1 $fnm.$i &> /dev/null
if [ $? -ne 0 ];then
echo "$fnm.$i can't be connected"
continue
fi
expect << EOF
spawn ssh-copy-id $fnm.$i
expect "? " {send "yes\r"}
expect "password:" {send "$pd\r"}
expect "#" {send "\r"}
EOF
expect << EOF
spawn ssh-copy-id $fnm.$i
expect "password:" {send "$pd\r"}
expect "#" {send "\r"}
EOF
echo "$fnm.$i has been finished"
done