linux修改密码点点点root,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

a8162f6e4d812bb623fa90c8c539684f.png

[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

e179709c1fb4c8a4ed75b8aab776d4d2.png

结果:

ffe3c745d155af12a70b73c53d45d491.png

参数说明:

set:可以设置超时,也可以设置变量

timeout:expect超时等待时间,默认10S

spawn:执行一个命令

expect "":匹配输出的内容

exp_continue:继续执行下面匹配

\r:可以理解为回车

awk -v I="$ip":赋值变量

expect{...}:输入多行记录

本文章参考了:

http://lizhenliang.blog.51cto.com/7876557/1674791

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值