awk综合脚本应用

3.awk综合脚本应用
问题
本案例要求编写脚本getupwd-awk.sh,实现以下需求:
找到使用bash作登录Shell的本地用户
列出这些用户的shadow密码记录
按每行“用户名 --> 密码记录”保存到getupwd.log,如图-2所示
在这里插入图片描述
图-2
步骤
实现此案例需要按照如下步骤进行。
步骤一:任务需求及思路分析
编写getupwd-awk.sh脚本的任务要求如下:
分析出使用bash作登录Shell的本地用户
列出这些用户的shadow密码记录
按每行“用户名 – 密码记录”保存结果
上一章实现时基本是用sed来过滤,结合变量替换截取来实现的,操作比较繁琐。
现在学习了awk以后,再想想这个任务要求,是不是变简单了?
—— 提取用户名列表时,只要通过awk命令以“:”为分隔提取/etc/passwd文件中结尾部分为“:/bin/bash”的用户记录的第1个字段即可。
—— 有了用户名列表以后,可以交给for循环做一个遍历,egrep提取密码行,再交给awk提取以“:”分隔的第3个字段即可。
步骤二:根据实现思路编写脚本
复制原getupwd.sh脚本,生成getupwd-awk.sh
[root@svr5 ~]# cat getupwd.sh //确认原脚本内容
#/bin/bash

/tmp/getupwd.log ## 创建空文件
sed -n '/:/bin/bashKaTeX parse error: Expected 'EOF', got '#' at position 33: … /etc/passwd #̲# 提取符合条件的账号记录 U…(egrep -c ‘.’ /tmp/urec.tmp) ## 取得记录个数
while [ ${i:=1} -le KaTeX parse error: Expected 'EOF', got '#' at position 17: …NUM ] #̲# 从第1行开始,遍历账号记录…(sed -n "KaTeX parse error: Expected 'EOF', got '#' at position 26: …/urec.tmp) #̲# 取指定行数的记录 …{UREC%%:} ## 截取用户名(记录去尾)
PREC=KaTeX parse error: Expected group after '^' at position 11: (sed -n "/^̲NAME:/p" /etc/shadow) ## 查找与用户名对应的密码记录
PASS=KaTeX parse error: Expected '}', got '#' at position 6: {PREC#̲*:} …{PASS%%:
} ## 去尾,只留下密码记录
echo “$NAME --> $PASS” >> /tmp/getupwd.log ## 保存结果
let i++ ## 自增1,转下一次循环
done
/bin/rm -rf /tmp/urec.tmp ## 删除临时文件
echo “用户分析完毕,请查阅文件 /tmp/getupwd.log” ## 完成后提示

[root@svr5 ~]# cp getupwd.sh getupwd-awk.sh //复制为新脚本文件
修改新脚本文件,内容参考如下:
[root@svr5 ~]# vim getupwd-awk.sh
#/bin/bash

创建空文件

/tmp/getupwd.log

提取用户名列表

awk -F: ‘/:/bin/bash$/{print $1}’ /etc/passwd > /tmp/users.tmp

通过for循环遍历用户名、查询密码记录,保存结果

for NAME in KaTeX parse error: Expected group after '^' at position 35: …) do grep "^̲NAME:" /etc/shadow | awk -F: ‘{print $1" --> "$2 |
“cat >> /tmp/getupwd.log”}’ /etc/shadow
done
echo “用户分析完毕,请查阅文件 /tmp/getupwd.log” ## 完成后提示

[root@svr5 ~]# chmod +x getupwd-awk.sh
步骤三:验证、测试脚本
[root@svr5 ~]# ./getupwd-awk.sh
用户分析完毕,请查阅文件 /tmp/getupwd.log

[root@svr5 ~]# head -5 /tmp/getupwd.log
root --> 6 6 6IWgMYmRACwdbfwBo$dr8Yn983nswiJVw0dTMjzbDvSLeCd1GMYjbvsDiFEkL8jnXOLcocBQypOCr4C6BRxNowIxjh6U2qeFU0u1LST/
zengye --> 6 6 6Qb37LOdzRl5995PI$L0zTOgnhGz8ihWkW81J.5XhPp/l7x2./Me2ag0S8tRndCBL9nIjHIKkUKulHxJ6TXyHYmffbVgUT6pbSwf8O71
clamav --> !!
mysql --> !!
abc --> !!
… …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董筱杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值