刷新账号密码过期时间——脚本案例

文章介绍了一个bash脚本,用于自动检测并刷新OS账号的30天密码过期时间,并通过expect脚本进行SSH登录测试,确保用户可以正常登录。脚本涉及passwd命令、chage命令和expect的使用。
摘要由CSDN通过智能技术生成

        OS账号默认30天密码过期,执行下面脚本刷新密码过期时间。
        脚本先是从密码文件中读取用户和密码,再使用passwd命令行修改密码。然后过滤chage -l的关键信息判断密码是否修改成功。最后使用expect脚本对每个用户进行ssh登录并测试,确保用户可以正常登录。

#!/bin/bash
User_name="rescue appservice hwmaintain batches secadm osreadonly monitor backup"
BIZ_device=`ip a |grep '10.119.' |awk  '{print $NF}'`
BIZ_IP=`cat /etc/sysconfig/network-scripts/ifcfg-$BIZ_device |grep "IPADDR=" |cut -d '=' -f2`
SYN_IP=`ip a |grep inet |grep "172.16." |awk -F" " '{print $2}' |awk -F"/" '{print $1}'`

cat /home/batches/$HOSTNAME-$BIZ_IP-password.log |while read test
do
    user=`echo $test |awk -F' ' '{print $2}'`
    passwd=`echo $test |awk -F' ' '{print $4}'`
    pass_sh="echo \""${passwd}"\" |passwd --stdin $user"
    echo "$pass_sh" >/tmp/test-$HOSTNAME-passwd.sh
    sh /tmp/test-$HOSTNAME-passwd.sh
    if [ $? == 0 ];then
        rm -f /tmp/test-$HOSTNAME-passwd.sh
    else
        echo "ERROR,改密失败"
        exit 1
    fi
done

for i in $User_name; do
passwd=`cat /home/batches/$HOSTNAME-$BIZ_IP-password.log |grep $i |awk -F' ' '{print $4}'`
chage_date=`date |cut -d ' ' -f 2,3`
chage -l $i |grep 'Last password change' |grep "$chage_date" > /dev/null 2>&1
    if [ $? -ne 0 ];then
        echo "$i 密码过期时间未更新,密码可能修改失败"
    fi

 # 使用expect脚本登录并测试
  expect << EOD
  log_user 0
    spawn ssh $i@$SYN_IP
    expect {
      -re "Are you sure you want to continue connecting*" {
        send "yes\r"
        exp_continue
      }
	  
      "password:" {
        send "$passwd\r"
        expect {
          "Last login:" {
            puts "Login test is SUCCESSFUL for $i"
          }
          timeout {
            puts "Login test is Unsuccessful for $i (timeout)"
          }
        }
      }
	  
      "Permission denied" {
        puts "Login test is Unsuccessful for $i (wrong password)"
      }
      timeout {
        puts "Login test is Unsuccessful for $i (connection timeout)"
      }
    }
    expect "$user@*" {
      send "exit\r"
    }
EOD
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值