Создайте файл, чтобы автоматически проверить, что список пользователей для пользователей указал

Я realitively новый для избиения сценариев, но создал это из моего интенсивного поиска с помощью Google

Я пытаюсь создать сценарий удара для работы Ubuntu, которая проверит список пользователей и найдет любых пользователей, которые не находятся в указанном списке. Я записал это до сих пор:

CAT/etc/passwd | grep-o-P ‘. {0,40}:1 [0-9] [0-9] [0-9]. {0,0}’. | сокращает-d:-f1

представления passwd файл, затем находит только строки с идентификатором пользователя 1 000 или выше, и все, прежде чем идентификатор пользователя каждой строки будет передан по каналу в сокращение, которое удаляет все кроме имени пользователя каждого пользователя.

Я затем хочу иметь проверку сценария файл для имен пользователей, которые я указываю (вероятно, скопированный со списка) и сравниваю каждого с выводом вышеупомянутого. Удаление всех имен пользователей указано.

Так, например:

У меня есть пользователи John, Ben и Tom на моем компьютере, Если я поместил John и Ben в файле, сценарий получает доступ, он должен произвести Tom, так как он не указан

Как я пошел бы о выполнении этого?

1
задан 4 December 2018 в 06:46

2 ответа

Этот код должен работать на Вас.

for username in $( awk -F':' '$3 >= 1000 {print $1}' /etc/passwd )
do
        if ! grep -q "$username" list.txt; then
                echo "$username"
        fi
done

Сохраните имена пользователей для регистрации в list.txt как в одном пользователе на строку

2
ответ дан 3 December 2019 в 07:22

grep позволяет указывать шаблоны из файла. Таким образом можно использовать grep -f опция с этой целью и -v для обратного сопоставления с образцом, т.е. строк печати, не соответствующих шаблону. Таким образом,

 printf "^%s\n" 'John' 'Ben' > /tmp/list.txt
 grep -v -f /tmp/list.txt  /etc/passwd | cut -d ':' -f 1
 rm l/tmp/ist.txt

Мы могли также принять во внимание UID, больше, чем 999, с тех пор по умолчанию, который относится к пользователям - людям, если не изменено Вашим системным администратором.

awk -F ':' '$1 !~ /John|Ben|nobody/  && $3 > 999' /etc/passwd
1
ответ дан 3 December 2019 в 07:22

Другие вопросы по тегам:

Похожие вопросы: