介绍
基本信息
作者:朱明宇
名称:批量修改多个远程服务器某个用户的密码
作用:批量修改多个远程服务器某个用户的密码
使用方法
1. 将此脚本和清单 $list 文件放在同一目录下
2. 清单 $list 里每服务器名占用 1 行
3. 给脚本分割线里的变量赋值
4. 给此脚本添加执行权限
5. 执行此脚本
脚本分割线里的变量
1. list=”list.txt” #指定清单的目录和名称
2. user=eternalcenter #指定要修改密码的用户
3. password=eternalcenter #指定要修改的密码
注意
此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器,并且可以通过 sudo 获得 su 的 root 权限
脚本
#!/bin/bash
####################### Separator ########################
list="list.txt"
user=eternalcenter
password=eternalcenter
####################### Separator ########################
num=1
cat $list
for i in `cat $list`
do
echo $num
echo $i
ssh -t $i "type lsb_release" &> /dev/null
if [ $? -ne 0 ]; then
distribution=`ssh -t $i "cat /etc/*release | grep '^NAME'"`
if [ $? -ne 0 ];then
distribution=`ssh -t $i "cat /etc/*release"`
fi
else
distribution=`ssh -t $i "lsb_release -i | grep 'ID' | grep -v 'n/a'"`
fi;
echo $distribution
case $distribution in
*"RedHat"* | *"Red Hat"*)
ssh -t $i "sudo -u root su - root -c \"echo $password | passwd --stdin $user\""
if [ $? -eq 0 ];then
echo -e "\033[32m$i is success\033[0m"
else
echo -e "\033[31m$i is fail\033[0m"
fi
;;
*"CentOS"*)
ssh -t $i "sudo -u root su - root -c \"echo $password | passwd --stdin $user\""
if [ $? -eq 0 ];then
echo -e "\033[32m$i is success\033[0m"
else
echo -e "\033[31m$i is fail\033[0m"
fi
;;
*"SUSE"* | *"SLES"*)
ssh -t $i "sudo -u root su - root -c \"echo $user:$password | chpasswd\""
if [ $? -eq 0 ];then
echo -e "\033[32m$i is success\033[0m"
else
echo -e "\033[31m$i is fail\033[0m"
fi
;;
*"openSUSE"*)
ssh -t $i "sudo -u root su - root -c \"echo $user:$password | chpasswd\""
if [ $? -eq 0 ];then
echo -e "\033[32m$i is success\033[0m"
else
echo -e "\033[31m$i is fail\033[0m"
fi
;;
*)
echo -e "\033[31m$i is fail \033[0m"
;;
esac
let num++
echo
done