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 diff
ich die gleiche Option habe, GNU diff
aber bei mir funktioniert linux
dies, 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 diff
Befehl 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 ksh
und es funktioniert.
Ich habe auch die grep
im grep
verteilten Whit verfügbaren Optionen geprüft aix
und es unterstützt sowohl -c
das Zählen als auch -s
das Unterdrücken von Fehlermeldungen.