批量修改密码脚本
2012-03-03 10:23
281 查看
写了个批量修改用户密码的脚本,只适合于多台机器密码用户名完全相同的场合。
重复完成一个工作的任务
功能实现先用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
本文出自 “技术交流” 博客,请务必保留此出处http://zhaoyun.blog.51cto.com/2090116/794987
重复完成一个工作的任务
功能实现先用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
本文出自 “技术交流” 博客,请务必保留此出处http://zhaoyun.blog.51cto.com/2090116/794987
相关文章推荐
- expect实现批量修改linux密码脚本分享
- linux shell脚本批量修改密码,无需交互输入
- Windows脚本系列之三——使用脚本批量修改本地管理员密码
- Python 远程批量修改密码脚本
- 批量修改服务器root密码脚本
- 批量修改root密码#shell脚本
- shell脚本批量修改主机密码
- 利用脚本批量修改h3C交换机super3的密码
- shel脚本批量添加用户,首次登陆强制修改密码
- ubuntu脚本里批量修改密码
- expect实现批量修改linux密码脚本分享
- 批量修改域用户登录脚本
- 批量插入/修改网页代码的asp脚本
- 用shell脚本批量修改目录下的文件名
- LINUX/AIX下批量修改用户名密码
- 批量修改远程linux服务器密码
- [原创]通过编写PowerDesigner脚本功能批量修改属性
- 批量修改贴图导入设置工具脚本
- 批量修改AD用户属性python脚本
- 定期批量修改远程服务器root密码