Linux采用EOF实现一键改密Shell脚本
Linux环境的Shell中通常将EOF与<<结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell,其特性可用于写入文件执行某些自定义操作等场景
EOF 自定义终止符
EOF,END Of File 的缩写,自定义终止符,在 Shell 脚本非常常见的语法格式。
一般情况 EOF 会与重定向符号组合使用,如:<< EOF 接下来的内容为标准输入。
EOF 配合几中重定向符号可以实现众多功能,如写入文件、追加写入、执行命令等。
# 开始
<<EOF
# 中间的命令
# 结束
EOF
注意事项
- EOF 和 << 组合之后,需要换行才能实现命令的输入
- EOF 一定要以 EOF 结尾,需要正常关闭输入,否则后续的 Shell 脚本无法正常执行
- EOF 代码块 (姑且这么称呼,就是两个 EOF 内的代码) ,左边不要有缩进
- EOF 代码块,每一行命令单独表示一句命令,不可一行多条叠加
- EOF 不支持 shell 的分号自动识别命令
修改密码脚本
修改密码脚本主要用于解决密码过期问题,将密码修改为当前密码即可再次生效。
脚本正文,根据命令中传入的数据进行密码修改。
脚本利用了 EOF+<< 标准输入 实现自动输入新密码实现密码修改。
#!/bin/bash
#filename: resetPwd.sh
#Author: mebugs
#Get Name And PassWord From Script
user=$1
pswd=$2
# EOF内输入的是密码,实际相当于手工执行密码修改操作。
passwd ${user} << EOF
${pswd}
${pswd}
EOF
echo "OK"
exit
脚本调用形式
sh resetPwd.sh test mebugs123
修改密码操作
#修改密码
#root用户修改自己的密码,不需要携带用户名
passwd [NAME]
#查询用户密码的有效期
chage -l [NAME]
#修改密码过期时间
#密码到期的日期,过了这天,此账号将不可用。0表示马上过期,-1表示永不过期
chage -E -1 [NAME]
#密码可以更改的最小天数,设置9999永不需要修改
chage -m 9999 用户名
#密码保持有效的最大天数。设置9999意味着永远有效
chage -M 9999 用户名
应用说明
一键修改密码可以使用这种形式。
如果密码同时含有单引号和双引号,那么则无法通过这种方法修改。
可以通过 history 命令看到修改记录。
echo new_passwd@000 | passwd --stdin root
该脚本的主要作用用于大批量维护环境时采用远程投放脚本来实现批量修改密码。
