- 格式化输出/etc/passwd,效果如下
[root@zabbix-server day6]# awk -F: 'BEGIN{ print "用户名 UID 家目录" }
{print $1,$3,$6}' /etc/passwd
用户名 UID 家目录
root 0 /root
bin 1 /bin
daemon 2 /sbin
adm 3 /var/adm
lp 4 /var/spool/lpd
sync 5 /sbin
shutdown 6 /sbin
[root@zabbix-server day6]# awk -F: 'BEGIN{ print "用户名 UID 家目录" }
{print $1,$3,$6}' /etc/passwd | column -t
用户名 UID 家目录
root 0 /root
bin 1 /bin
daemon 2 /sbin
adm 3 /var/adm
lp 4 /var/spool/lpd
sync 5 /sbin
shutdown 6 /sbin
halt 7 /sbin
mail 8 /var/spool/mail
operator 11 /root
过滤系统账户对应的密码
- 在awk中可以通过-v选项调用shell中的变量
[root@zabbix-server day6]# x="hello"
[root@zabbix-server day6]# awk 'BEGIN{print x}'
[root@zabbix-server day6]# awk -v tmp=$x 'BEGIN{print tmp}'
hello
- 从/etc/passwd中将所有能登陆的账户名提取出来
- 从/etc/shadow中提取账户对应的密码
[root@zabbix-server day6]# more userpass.sh
#!/bin/bash
USER=$(awk -F: '/bash$/{print $1}' /etc/passwd)
for i in $USER
do
awk -F: -v iuser=$i '$1==iuser{print $1,$2}' /etc/shadow
done
[root@zabbix-server day6]# ./userpass.sh
root $6$aDaQ0CHx.qEoIPdq$sSaMQLhOattjJCaiqC/drUcJO8n4a1Mb9FiY0zy49Xds40n7QVW35ZBVEG/Xk2TGLcHBKrEXlyFTZt2raTfa4.
k8s $6$9rtJNCsx8kxL6Ac8$72Qhi3kl3mOVnKObpba.TwwmS5YBQVSd1KT4YRHyZI673goh8cgm5Bk/YwRerQ3JfKc0z8qNYc5twq9J88BMh0

该博客介绍了如何利用awk命令和shell脚本来处理Linux系统的用户信息。内容包括格式化输出`/etc/passwd`文件,提取能登录的账户名,以及从`/etc/shadow`中获取账户对应的密码。示例中展示了如何通过awk的BEGIN块设置输出格式,以及如何通过-v选项传递shell变量到awk中。此外,还提供了一个名为`userpass.sh`的bash脚本,用于遍历`/etc/passwd`和`/etc/shadow`,提取出所有可登录账户及其对应的加密密码。

2141

被折叠的 条评论
为什么被折叠?



