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

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

是否可以查詢 /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執行時:kshaix

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中可用的選項,它支援計數和抑制錯誤訊息。grepaix-c-s

相關內容