Linux采用EOF实现一键改密脚本(Shell脚本)

Linux环境的Shell中通常将EOF与<<结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell,其特性可用于写入文件执行某些自定义操作等场景

Linux采用EOF实现一键改密脚本(Shell脚本)

所属分类: Linux
专题标签: Shell 脚本 命令

EOF自定义终止符

EOF自定义终止符,在Shell脚本非常常见的语法格式。
一般情况EOF会与重定向符号组合使用,如:<< EOF 接下来的内容为标准输入。
EOF配合几中重定向符号可以实现众多功能,如写入文件、追加写入、执行命令等。

  1. # 开始
  2. <<EOF
  3. # 中间的命令
  4. # 结束
  5. EOF

修改密码脚本

修改密码脚本主要用于解决密码过期问题,将密码修改为当前密码即可再次生效。
脚本正文,根据命令中传入的数据进行密码修改。
脚本利用了 EOF+<<标准输入 实现自动输入新密码实现密码修改。

  1. #!/bin/bash
  2. #filename: resetPwd.sh
  3. #Author: mebugs
  4. #Get Name And PassWord From Script
  5. user=$1
  6. pswd=$2
  7. # EOF内输入的是密码,实际相当于手工执行密码修改操作。
  8. passwd ${user} << EOF
  9. ${pswd}
  10. ${pswd}
  11. EOF
  12. echo "OK"
  13. exit

脚本调用形式

  1. sh resetPwd.sh test mebugs123

修改密码操作

  1. #修改密码
  2. #root用户修改自己的密码,不需要携带用户名
  3. passwd [NAME]
  4. #查询用户密码的有效期
  5. chage -l [NAME]
  6. #修改密码过期时间
  7. #密码到期的日期,过了这天,此账号将不可用。0表示马上过期,-1表示永不过期
  8. chage -E -1 [NAME]
  9. #密码可以更改的最小天数,设置9999永不需要修改
  10. chage -m 9999 用户名
  11. #密码保持有效的最大天数。设置9999意味着永远有效
  12. chage -M 9999 用户名

应用说明

一键修改密码可以使用这种形式。
如果密码同时含有单引号和双引号,那么则无法通过这种方法修改。
可以通过history命令看到修改记录。

  1. echo new_passwd@000 | passwd --stdin root

该脚本的主要作用用于大批量维护环境时采用远程投放脚本来实现批量修改密码。