批量修改服务器用户名密码

一、实现批量修改服务器用户名密码,以普通用户身份修改自己的用户名密码,普通用户需要有执行passwd管理员所能执行命令的权限,配置sudo权限;

1、修改服务器列表文件:服务器、用户名、密码配置文件

# cat old_info 
#    IP地址   用户 密码  端口
#-------------------------------
192.168.56.89 lgh 123456 22
192.168.56.90 lgh 123456 22

2、批量修改用户名密码脚本

# cat modpass.sh 
#!/bin/sh
OLD_INFO=old_info
NEW_INFO=new_info
for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do
  USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)
  PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)
  PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)
  NEW_PASS=$(mkpasswd -l 8)
  echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO
  expect -c "
  spawn ssh -p$PORT $USER@$IP
  set timeout 2
  expect {
    \"(yes/no)\" {send \"yes\r\";exp_continue}
    \"password:\" {send \"$PASS\r\";exp_continue}
    \"$USER@*\" {send \"echo \'$NEW_PASS\' |sudo passwd --stdin $USER\r exit\r\";exp_continue}
  }"
done

 二、实现批量修改服务器用户名密码,以root用户身份修改指定用户的用户名密码;

1、修改服务器列表文件:服务器、用户名、密码配置文件,此配置文件不需要普通用户的密码;

# cat old_info 
#    IP地址   用户 密码  端口
#-------------------------------
192.168.56.89 lgh 123456 22
192.168.56.90 lgh 123456 22

2、批量修改用户名密码脚本

# cat modpass.sh 
#!/bin/sh
OLD_INFO=old_info
NEW_INFO=new_info
for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do
  USER_ROOT=root
  USER_ROOT_PASS=redhat
  USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)
  PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)
  PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)
  NEW_PASS=$(mkpasswd -l 8)
  echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO
  expect -c "
  spawn ssh -p$PORT $USER_ROOT@$IP
  set timeout 2
  expect {
    \"(yes/no)\" {send \"yes\r\";exp_continue}
    \"password:\" {send \"$USER_ROOT_PASS\r\";exp_continue}
    \"$USER_ROOT@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue}
  }"
done

 

posted @ 2019-04-16 11:47  miclesvic  阅读(473)  评论(0)    收藏  举报