博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量修改密码脚本
阅读量:6199 次
发布时间:2019-06-21

本文共 2787 字,大约阅读时间需要 9 分钟。

写了个批量修改用户密码的脚本,只适合于多台机器密码用户名完全相同的场合。

重复完成一个工作的任务



功能实现先用user用户登录系统,然后切换到root用户修改root用户的密码和user用户的密码,系统安全策略禁止root用户直接ssh登录系统。



一共有三个文件

第一个 

changepas.sh文件,主脚本调用expect脚本,读取ipadd文件内容,修改密码。

#!/bin/bash
#赵云
#使用前请确保本机已经安装expect包
#脚本提供循环IP地址给expect脚本执行,修改批量密码功能
#只实现相同用户相同密码的操作。
#2012年3月2日  
#判断有几个服务器IP地址
number=`cat ipadd  |grep -v ^$ |grep -v '#'  |wc -l`
rpm -qa |grep expect &>/dev/null
if [ $? -eq 0 ] ; then
  #执行循环,一次修改每个服务器的用户密码
  for ((i=1;i<=$number;i++))
  do
    #提取IP地址
    ip=`cat ipadd  |grep -v ^$ |grep -v '#' |head -n $i |tail -n 1`
    time=`date +"%F %T"`
    ./expect.sh $ip 
    level=`echo $?`
    #记录修改成功与失败的日志
     [  $level -eq 0 ] && echo "$time change password ok $ip " >> changepass.log 
     [ $level -eq 1 ] &&  echo "$time $ip yw 用户密码不正确,禁止登录,修改密码失败" >> changepass.log        
     [ $level -eq 2 ] && echo "$time $ip root  用户密码不正确,禁止登录,修改密码失败" >> changepass.log 
     [ $level -eq 3 ] && echo "$time  $ip 非root用户登录,修改密码失败" >> changepass.log
     [ $level -eq 4 ] && echo "$time  $ip 连接超时,修改密码失败" >> changepass.log
     [ $level -eq 5 ] && echo "$time  $ip 连接失败,主机拒绝连接,修改密码失败" >> changepass.log
  done
else
  echo "请安装expect工具\n"
fi

第二个脚本文件,expect脚本。

[root@localhost scripts]# cat expect.sh 
#!/usr/bin/expect -f
#在此修改用户密码参数
#设置密码变量
####################
##                ##
## 需要修改部分   ##
##                ##
####################
 
#user用户的密码
set ypass 123pass
#root用户的密码
set pass  1234567
#新user用户的密码
set newypass 456pass
#新root用户的密码
set newpass 123456
#设置服务器端口
set port 22
#######################
##                   ##
##  程序运行部分     ##
##                   ##
#######################
#设置服务器IP地址
set ip [ lindex $argv 0 ]
spawn ssh -p $port user@$ip
expect "Connection refused" {exit 5}
expect {
     "yes/no" {
         send "yes\n";
           }
      }
expect "*password:"
send "$ypass\r"
expect "please try again" {exit 1 }
expect "user@*"
set timeout 3
send "su - root\r"
expect "*password:"
send "$pass\r"
expect "incorrect*" {exit 2 }
expect "su: 密码不正确" {exit 2 }
expect "root@*"
set timeout 1
send "echo $newypass |passwd user --stdin\n"
expect "Only root can do that." {exit 3 }
expect "successfully."
send "echo $newpass |passwd root --stdin\n"
expect "Only root can do that." {exit 3 }
expect "successfully."
send "exit\n"
expect "user@"
send "exit\n"
interact 

第三个文件,地址池。


[root@localhost scripts]# cat ipadd 
#填写要修改的服务器ip地址
10.102.102.248
192.168.0.26
192.168.0.44
192.168.0.12


日志记录,修改成功与否记录日志


2012-03-03 15:22:05 10.102.102.248 user用户密码不正确,禁止登录,修改密码失败

2012-03-03 15:22:32 192.168.0.26 user 用户密码不正确,禁止登录,修改密码失败

2012-03-03 15:24:21 10.102.102.248 root  用户密码不正确,禁止登录,修改密码失败

2012-03-03 15:24:47 192.168.0.26 root  用户密码不正确,禁止登录,修改密码失败

2012-03-03 15:54:39  10.102.102.248 连接超时,修改密码失败

2012-03-03 15:55:09  192.168.0.26 连接超时,修改密码失败

2012-03-03 15:55:39  192.168.0.44 连接失败,主机拒绝连接,修改密码失败

2012-03-03 15:18:45 change password ok 10.102.102.248 

2012-03-03 15:19:12 change password ok 192.168.0.26 

本文转自zhaoyun00 51CTO博客,原文链接:http://blog.51cto.com/zhaoyun/794987

转载地址:http://ilnca.baihongyu.com/

你可能感兴趣的文章
模拟彩票中奖(没弄明白)
查看>>
「Rancher社区技术支持计划」全面启动
查看>>
1.c#-Convert 类型转换
查看>>
修改this指向(bind、call 和 apply)
查看>>
使用硬盘,安装双系统,Win7+CentOS
查看>>
Linux-php-fpm慢执行日志
查看>>
docker部署私有仓库
查看>>
67.zabbix添加自定义监控项目、配置邮件告警、测试告警
查看>>
2.建立git仓库&&代码提交
查看>>
shell基础知识(1)
查看>>
Memcached服务安装
查看>>
Tomcat配置HTTPS(此处验证了tomcat7和tomcat9)
查看>>
你所不知道的限流
查看>>
shell脚本源码安装tomcat
查看>>
Linux下Tomcat部署web项目
查看>>
变频电源面板上的英文按钮和显示都是什么意思
查看>>
你不得不知的这些海报设计小技巧
查看>>
Java基础_07
查看>>
日结小细节
查看>>
华为手机通讯录丢失如何恢复?快速恢复
查看>>