是否可以查询 /etc/passwd 文件以查看所有小于 200 的用户 UIDS 并检查这些用户是否在 /etc/ftpusers 等文件中?
到目前为止,我已经成功编写了下面的命令,列出了 UID 低于 200 的所有用户,但我不确定如何检查这些列出的用户是否在 /etc/ftpusers 文件中。
grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'
如果文件中没有任何用户,我需要输出差异。我尝试过使用 for 语句,但效果不佳。
答案1
我不知道是否aix diff
有相同的选项GNU diff
,但在我的this 中使用(默认 shell )工作linux
执行时:ksh
aix
diff -I "^#" --new-line-format="" --unchanged-line-format="" <(awk -F: '$3 < 200 {print $1}' /etc/passwd) /etc/ftpusers
如果diff
命令不同,请尝试使用循环:
for u in $(awk -F":" '$3 < 200 {print $1}' /etc/passwd); do
count=$(grep -scx "$u" /etc/ftpusers)
[ "$count" -gt 0 ] || echo "$u"
done
我已经测试过它ksh
并且它有效。
我还检查了分布式惠特grep
中可用的选项,它支持计数和抑制错误消息。grep
aix
-c
-s