Loading
0

linux系统批量修改root用户密码

脚本目的:批量修改linux系统root用户密码
条件:必须是修改的用户是root,因为只有root才有权限使用passwd命令
说明:先把IP、用户、密码、端口信息写到old_info文件中,脚本从这个文件读取对应的信息,利用expect免交互登陆系统。将随机生成的8位密码修改为root用户新密码。然后将新密码保存到net_info文件中.
[root@wuke1 test1]# cat old_info
#     ip     user    passwd    port
#------------------------------------------------
192.168.1.181  root    admini123     22
192.168.1.182  root    admini123     22

[root@wuke1 test1]# cat change_pass.sh
#! /bin/bash
old_info=/opt/test1/old_info
new_info=/opt/test1/new_info
for ip in `awk '/^[^#]/{print $1}' $old_info`
do
user=`awk -v I=$ip '{if(I==$1)print $2}' $old_info`
pass=`awk -v I=$ip '{if(I==$1)print $3}' $old_info`
port=`awk -v I=$ip '{if(I==$1)print $4}' $old_info`
new_pass=`mkpasswd -l 8`       #mkpasswd生成随机密码
echo "$ip    $user    $new_pass    $port" >> $new_info
expect -c "
spawn ssh -p$port $user@$ip       #spawn执行一个命令
set timeout 2                     #设置超时
expect {
\"(yes/no)\" {send \"yes\r\";exp_continue}
\"password:\" {send \"$pass\r\";exp_continue}
\"$user@*\" {send \"echo \'$new_pass\' |passwd --stdin $user\r exit\r\";exp_continue}
}"
done

结果:

参数说明:
set:可以设置超时,也可以设置变量
timeout:expect超时等待时间,默认10S
spawn:执行一个命令
expect "":匹配输出的内容
exp_continue:继续执行下面匹配
\r:可以理解为回车
awk -v I="$ip":赋值变量
expect{...}:输入多行记录

【声明】:8090安全小组门户(http://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。