Befehl zum Überprüfen, ob Benutzer in /etc/passwd in einer anderen Datei vorhanden sind

Befehl zum Überprüfen, ob Benutzer in /etc/passwd in einer anderen Datei vorhanden sind

Ist es möglich, die Datei /etc/passwd abzufragen, um alle Benutzer-UIDs unter 200 anzuzeigen und zu überprüfen, ob sich diese Benutzer in einer Datei wie /etc/ftpusers befinden?

Bisher ist es mir gelungen, den folgenden Befehl zu erstellen, der alle Benutzer mit einer UID unter 200 auflistet, aber ich bin nicht sicher, wie ich überprüfen kann, ob sich die aufgelisteten Benutzer in der Datei /etc/ftpusers befinden.

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

Wenn Benutzer nicht in der Datei sind, muss der Unterschied ausgegeben werden. Ich habe versucht, eine For-Anweisung zu verwenden, aber das hat nicht gut funktioniert.

Antwort1

Ich weiß nicht, ob aix diffich die gleiche Option habe, GNU diffaber bei mir funktioniert linuxdies, wenn es mit ksh(der Standard-Shell in aix) ausgeführt wird:

diff -I "^#" --new-line-format="" --unchanged-line-format="" <(awk -F: '$3 < 200  {print $1}' /etc/passwd) /etc/ftpusers

Wenn der diffBefehl anders ist, versuchen Sie es mit einer Schleife:

for u in $(awk -F":" '$3 < 200 {print $1}' /etc/passwd); do
        count=$(grep -scx "$u" /etc/ftpusers)
        [ "$count" -gt 0 ] || echo "$u"
done

Ich habe es getestet kshund es funktioniert.

Ich habe auch die grepim grepverteilten Whit verfügbaren Optionen geprüft aixund es unterstützt sowohl -cdas Zählen als auch -sdas Unterdrücken von Fehlermeldungen.

verwandte Informationen