• 用expect 修改linux系统用户密码


    #!/usr/bin/expect
    
    set OLDPWD [lindex $argv 0]
    set NEWPWD [lindex $argv 1]
    
    # spawn /usr/bin/echo $OLDPWD
    # spawn /usr/bin/echo $NEWPWD
    spawn /usr/bin/passwd
    expect "(current) UNIX password*" 
    send "$OLDPWD
    "
    expect "Enter new UNIX password*" 
    send "$NEWPWD
    "
    expect "Retype new UNIX password*"
    send "$NEWPWD
    "
    
    interact

    系统用的是CentOS 7.5;

    先安装expect

    # yum install -y expect

    # which expect

    /usr/bin/expect

    脚本执行方式:

    模仿无root权限,重置用户自己的密码:

    $ /usr/bin/expect tt.sh 原密码 新密码

    在一台机器上运行脚本,通过记录IP,用户名,原密码,新密码的中间文件passwd.txt,来批量重置接管环境的密码,尤其是在某些没有root用户权限的情况下,通过中间文件的方式不会有重置了一个密码但是自己忘记了或者重置的密码与自己记录的密码不一致的情况。脚本待更新,大致是通过expect和awk实现的。

    首先呢,我们需要生成一堆越复杂越好的密码。怎么用脚本生成呢。

    参考:https://www.cnblogs.com/dadonggg/p/8477655.html

    # 生成24位随机密码,urandom 真是特别好用,会比 # date +%s |sha256sum |base64 |head -c 10 ;echo 这个命令好用,因为如果用脚本的话,输入的时间参数相差无几,使用相同的加密方式会有大量相似的密码生成,实用性就不够了,除非再用一个特殊的方法获得随机字符作为输入。

    # </dev/urandom tr -dc '1234567890abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+<>?,./' | head -c24; echo

    脚本编写重定向到文件,然后用脚本再重新生成一个和 IP、用户名、原密码 一一对应的一个文件,便于记录修改后的密码,及记录资产台账。

    批量重置的前提,需要重置密码的系统都需要先安装 expect。 

  • 相关阅读:
    echarts 立体图
    css 设置边框边角
    PS2020 快速设置文字渐变
    idea 2019 永久破解
    使用VUE+element ui 实现输入框 占位符自动补全功能
    纯css 设置隔行样式
    CSS 设置float:left 导致后面元素错乱问题
    c primer plus 4编程练习
    c语言中以八进制数表示字符、并输出
    c语言中printf()函数的返回值
  • 原文地址:https://www.cnblogs.com/zhrngM/p/13041048.html
Copyright © 2020-2023  润新知