您的位置:首页 > 其它

批量更新服务器,生成随机密码并记录 (重要,批量脚本示例)

2017-02-07 16:12 429 查看
测试环境用了一台debian一台centos

若服务器数量很多可以在ssh_config 下面增加一行 StrictHostKeyChecking no  跳过密钥的验证,不用每次都输入yes/no

debian的环境下请用完整路径执行/bin/bash +x  sshnewpass.sh

#!bin/bash
#新建一个server.txt将服务器的账号密码写进去
#文本格式:  172.16.81.75|root|yuan|22
ip=(`grep "." server.txt |cut -d "|" -f1`)
user=(`grep "." server.txt |cut -d "|" -f2`)
port=(`grep "." server.txt |cut -d "|" -f4`)
passwd=(`grep "." server.txt |cut -d "|" -f3`)
#newpass=`date +%s |sha256sum |base64 |head -c 32 ;echo` #先用123456测试,能成功再使用
#newpass="123456"
for (( i = 0; i < 3; i++ )); do
newpass=`date +%s |sha256sum |base64 |head -c 32 ;echo`
echo "${ip[i]} ${user[i]}  ${port[i]}  ${passwd[i]}"
sshpass -p "${passwd[i]}" ssh -p ${port[i]} ${user[i]}@${ip[i]} "echo ${user[i]}:$newpass | chpasswd"
#	sshpass -p "${passwd[i]}" ssh -p ${port[i]} ${user[i]}@${ip[i]} "ls" #测试是否连接成功
if [[ $? == 0 ]]; then
echo "${ip[i]} 原密码:${passwd[i]} 新密码:$newpass" >>newhost.txt
echo "${ip[i]} 原密码:${passwd[i]} 新密码:$newpass"
else
echo "更新密码失败请检查主机密码是否对应,端口是否正确,sshpasss是否可用"
fi
done


备注:几种踩过的坑,感谢开发同事重新刷新了世界观

#!bin/bash
#新建一个文本将服务器的账号密码写进去
#文本格式: 172.16.81.75|root|yuan|22
ip=`grep "." server.txt |cut -d "|" -f1`
user=`grep "." server.txt |cut -d "|" -f2`
port=`grep "." server.txt |cut -d "|" -f4`
passwd=`grep "." server.txt |cut -d "|" -f3`
#newpass=`date | base64` #先用123456测试,能成功再使用
newpass="123456"
a=($ip $user $port $passwd $newpass)
for i in ${a}; do
#sshpass -p "$passwd" ssh -p $port $user@$x "echo '$newpass' | passwd root --stdin" centos使用
# sshpass -p "${a[3]}" ssh -p ${a[2]} ${a[1]}@${a[0]} "echo ${a[1]}:${a[4]} | chpasswd "
echo " 主机 ${a[0]} 端口 ${a[2]} 用户 ${a[1]} 密码 ${a[3] "
sshpass -p "${a[3]}" ssh -p ${a[2]} ${a[1]}@${a[0]} "ls"
if [ $? == 0 ]; then
echo "${a[0]} 原密码:${a[3]} 新密码:${a[4]}"
echo "${a[0]} 原密码:${a[3]} 新密码:${a[4]}" >>newhost.txt
else
echo "更新密码失败请检查主机密码是否对应,端口是否正确,sshpasss是否可用"
fi
done

#sshpass -p "$passwd" ssh root@$ip "ls"

$i=0
while [[ $i < ${#..} ]]; do
${ip[$i]} ${user[$i]}
$i++
done

for (( i = 0; i < 10; i++ )); do
#statements
done

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: