温州网站建设网络,美丽乡村网站建设模板,软件开发培训一般要多少钱,浙江省住房和城乡建设行业网站写在前面 CentOS Linux release 7.9.2009 (Core) 系统已验证默认root账户, 其他账户无效创建[auto_mm.sh]必须vi创建文件然后粘贴 1.安装expect
1.1.在线安装
yum install -y tcl
yum install -y expect
1.2.离线安装(选其中一个即可)
1.2.1.在能联通公网的机器导出rpm包到…写在前面 CentOS Linux release 7.9.2009 (Core) 系统已验证默认root账户, 其他账户无效创建[auto_mm.sh]必须vi创建文件然后粘贴 1.安装expect
1.1.在线安装
yum install -y tcl
yum install -y expect
1.2.离线安装(选其中一个即可)
1.2.1.在能联通公网的机器导出rpm包到不能联通公网的机器安装
参考 shell(30) : yum导出依赖包并离线安装_yum 导出包-CSDN博客
repotrack expect1.2.2.百度网盘下载
待补充 ...
1.2.3.CSDN下载
待补充 ...
2.填下ip和密码信息(填好直接粘贴即可)
cat ips EOF
192.168.1.1 abc123
192.168.1.2 abc123
EOF若执行失败则创建ips文件, 填入以下内容
192.168.1.1 abc123
192.168.1.2 abc123
3.创建执行脚本 auto_mm.sh , 粘贴以下
#!/usr/bin/bash
path$(cd $(dirname $0) pwd)
cd $pathfunction info() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e $DATE_N|INFO|$
}function warning() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[33m$DATE_N|WARINIG|$ \033[0m
}function success() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[32m$DATE_N|SUCCESS|$ \033[0m
}function error() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[31m$DATE_N|ERROR|$ \033[0mexit
}cat create_mm.sh EOF
ssh-keygen -t rsa -N EOF
/root/.ssh/id_rsa
yes\EOF
EOF
sed -i s#\\\\\EOF#EOF#g create_mm.shrm -rf auto_mm_mysif ! test -e ips; thenerror [ips]文件不存在
fiecho -----------------[拉取公钥]-----------------
while read line; doip$(echo $line | awk {print $1})pass$(echo $line | awk {print $2})# 创建ssh秘钥expect EOFspawn ssh root$ip ls /root/.ssh/id_rsa.pub |wc -l /root/auto_mm_rsexpect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFexpect EOFspawn scp root$ip:/root/auto_mm_rs ./expect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFrs$(cat auto_mm_rs)if [ $rs -eq 0 ]; thenwarning $ip未创建ssh秘钥, 执行创建ssh秘钥expect EOFspawn scp create_mm.sh root$ip:/rootexpect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFexpect EOFspawn ssh root$ip sh /root/create_mm.shexpect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFsleep 1sexpect EOFspawn ssh root$ip ls /root/.ssh/id_rsa.pub |wc -l /root/auto_mm_rsexpect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFexpect EOFspawn scp root$ip:/root/auto_mm_rs ./expect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFrs$(cat auto_mm_rs)if [ $rs -eq 0 ]; thenerror [$ip]ssh秘钥创建失败elsesuccess [$ip]ssh秘钥创建成功fielsewarning $ip已创建ssh秘钥fi# 拉取ssh公钥expect EOFspawn scp root$ip:/root/.ssh/id_rsa.pub ./expect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFif ! test -e id_rsa.pub; thenerror [$ip]ssh公钥拉取失败ficat id_rsa.pub auto_mm_myssuccess [$ip]拉取公钥成功
done ipsecho -----------------[发送公钥]-----------------
while read line; doip$(echo $line | awk {print $1})pass$(echo $line | awk {print $2})expect EOFspawn scp auto_mm_mys root$ip:/rootexpect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOFexpect EOFspawn ssh root$ip cat /root/auto_mm_mys /root/.ssh/authorized_keysexpect {yes/no { send yes\n;exp_continue} password { send $pass\n}}expect eof
EOF
done ipsecho -----------------[验证]-----------------
cat auto_mm_yz.sh EOF
function info() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e $DATE_N|INFO|$
}function warning() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[33m$DATE_N|WARINIG|$ \033[0m
}function success() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[32m$DATE_N|SUCCESS|$ \033[0m
}function error() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[31m$DATE_N|ERROR|$ \033[0m
}
EOFwhile read line; doip$(echo $line | awk {print $1})pass$(echo $line | awk {print $2})echo ssh $ip -o PreferredAuthenticationspublickey -o StrictHostKeyCheckingno \date\ /dev/null 21 auto_mm_yz.shcat auto_mm_yz.sh EOF
if [ $? -eq 0 ]; then
EOFecho success \[local_ip] [$ip]设置免密成功\ auto_mm_yz.shecho else auto_mm_yz.shecho warning \[local_ip] [$ip]设置免密失败\ auto_mm_yz.shecho fi auto_mm_yz.sh
done ips
sed -i s#local_ip#\$1#g auto_mm_yz.shcat yz.sh EOF
#!/usr/bin/bashfunction info() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e $DATE_N|INFO|$
}function warning() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[33m$DATE_N|WARINIG|$ \033[0m
}function success() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[32m$DATE_N|SUCCESS|$ \033[0m
}function error() {DATE_N$(date %Y-%m-%d %H:%M:%S.%N | cut -b 1-23)echo -e \033[31m$DATE_N|ERROR|$ \033[0m
}function yz() {ssh $1 -o PreferredAuthenticationspublickey -o StrictHostKeyCheckingno date /dev/null 21if [ $? -eq 0 ]; thensuccess [$1]配置免密成功info 验证【[$1]】对所有服务器的免密配置scp auto_mm_yz.sh root$1:/rootssh root$1 sh /root/auto_mm_yz.sh $1elsewarning [$1]配置免密失败expect EOFspawn scp auto_mm_yz.sh root$1:/rootexpect {yes/no { send yes\n;exp_continue} password { send $2\n}}expect eof
\EOFinfo 验证【[$1]】对所有服务器的免密配置expect EOFspawn ssh root$1 sh /root/auto_mm_yz.sh $1expect {yes/no { send yes\n;exp_continue} password { send $2\n}}expect eof
\EOFfi
}EOF
sed -i s#\\\\\EOF#EOF#g yz.shwhile read line; doip$(echo $line | awk {print $1})pass$(echo $line | awk {print $2})echo yz $ip $pass yz.sh
done ipssh yz.sh# 清理
rm -rf auto_mm_mys
rm -rf auto_mm_rs
rm -rf auto_mm_yz.sh
rm -rf create_mm.sh
rm -rf id_rsa.pub
rm -rf yz.sh
4.执行脚本
sh auto_mm.sh