目的:通过主控制端用最简便的方式修改所有被控制端的root密码
服务器之间建立ssh公钥认证
1.主控端建立ssh密钥

  1. ssh-keygen -t rsa 

2.将生成的id_rsa.pub文件发送到被控端.也可以用别的方法,方法太多,不一一列举.

  1. #!/bin/bash 
  2. for IP in ip_list.txt 
  3. do 
  4. scp ~/.ssh/id_rsa.pub $IP:/home/ 
  5. done 

3.进入被控端

  1. mkdir ~/.ssh 
  2. cat /home/id_rsa.pub >> /root/.ssh/authorized_keys #将id_rsa.pub的内容追加到authorized_keys 中 

运行修改密码脚本

  1. #!/bin/bash 
  2. #filename: root_pwd.sh 
  3. #Environment: Centos 5.6 32-bit 
  4. #Author: maoxian 
  5. #Blog: maoxian.blog.51cto.com 
  6.  
  7. #定义变量 
  8. ip_list=`cat /root/change_pwd/ip_list.txt` 
  9. #定义一个自动生成随机密码的函数.----------------------- 
  10. function pwdgen { 
  11.     strUp="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
  12.     strLow="abcdefghijklmnopqrstuvwxyz" 
  13.     strNum="0123456789" 
  14.     passLen="8" 
  15.     while [ "${#pass}" -le "$passLen" ] 
  16.     do 
  17.         passUp="${strUp:$(($RANDOM%${#strUp})):1}" 
  18.         passLow="${strLow:$(($RANDOM%${#strLow})):1}" 
  19.         passNum="${strNum:$(($RANDOM%${#strNum})):1}" 
  20.         pass="$pass$passUp$passLow$passNum" 
  21.     done 
  22.     echo ${pass:0:$passLen
  23. #选择改密码的方式.------------------------------------- 
  24. read -p "密码随机生成输入a 密码手动设置输入b: " fangshi 
  25. if [ $fangshi = a ];then 
  26. TMP_PWD=`pwdgen` 
  27. elif [ $fangshi = b ]; then 
  28. read -p "请输入您要设置的密码: " TMP_PWD 
  29. else 
  30. echo " 输入错误 " 
  31. exit 
  32. fi 
  33. #密码修改执行.----------------------------------------- 
  34. for IP in $ip_listdo 
  35. echo $TMP_PWD > TMP_PWD.txt 
  36. ssh $IP passwd root --stdin < TMP_PWD.txt 
  37. if [ $? = 0 ] ; then 
  38.     echo -e "$(date "+%Y-%m-%d %H:%M:%S")\t${IP}\t${TMP_PWD}\t" >> pwd_$(date +%Y-%m-%d).log 
  39. else 
  40.     echo -e "$(date "+%Y-%m-%d %H:%M:%S")\t${IP} Password change fails\tplease check!\t" >> fails_$(date +%Y-%m-%d).log 
  41. fi 
  42. done 
  43. rm -f TMP_PWD.txt 
  44. echo "所有主机的密码修改已完成,请查看pwd_$(date +%Y-%m-%d).log文件!" 

完了后会在当前目录下生成一个.log文件,把这文件保管好,最好是另外保存到安全的地方.密码忘记的时候还得看这个文件的,但又不能让别人看到.