Команда для проверки существования пользователей в /etc/passwd в другом файле

Команда для проверки существования пользователей в /etc/passwd в другом файле

Можно ли запросить файл /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подавление сообщений об ошибках.

Связанный контент