Можно ли запросить файл /etc/passwd, чтобы просмотреть все пользовательские UIDS менее 200 и проверить, находятся ли эти пользователи в файле, например /etc/ftpusers?
Пока что мне удалось создать команду ниже, которая выводит список всех пользователей с UID ниже 200, но я не уверен, как проверить, находятся ли эти пользователи в файле /etc/ftpusers.
grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'
Если в файле нет ни одного пользователя, мне нужно вывести разницу. Я пробовал использовать оператор for, но он не сработал.
решение1
Я не знаю, aix diff
есть ли такая же опция GNU diff
, но в моем случае 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
подавление сообщений об ошибках.