Я 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, так как он не указан
Как я пошел бы о выполнении этого?
Этот код должен работать на Вас.
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 как в одном пользователе на строку
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