Scripting

檢查 /etc/passwd 中的使用者是否存在於不同文件中的命令

  • June 7, 2021

是否可以查詢 /etc/passwd 文件以查看所有小於 200 的使用者 UIDS 並檢查這些使用者是否在 /etc/ftpusers 等文件中?

到目前為止,我已經設法製作了下面的命令,該命令列出了 UID 低於 200 的所有使用者,但我不確定如何檢查這些列出的使用者是否在 /etc/ftpusers 文件中。

grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'

如果文件中沒有任何使用者,我需要輸出差異。我曾嘗試使用 for 語句,但效果不佳。

我不知道是否aix diff有相同的選項,GNU diff但是在我的linuxthis 中使用ksh(預設 shell 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並且可以正常工作。

我還檢查了分佈式 whitgrep中可用的選項,它支持計數和抑制錯誤消息。grep``aix``-c``-s

引用自:https://unix.stackexchange.com/questions/652817