Что является интерпретацией 'awk-F'': '2$ ~ “\\$” {печатают 1$}'/etc/shadow'?

Я использовал команду для получения, список пользователей вошел в систему моя машина, но я не могу понять значение команды.

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow
2
задан 26 January 2016 в 20:49

4 ответа

Это не показывает пользователям, зарегистрированным Вашей машине, но учетным записям пользователей, которым установили пароль. Обратите внимание, что это должно, Вы использовать gawk вместо mawk, "\$" должны были бы быть исправлены, чтобы быть или /\$/ или "\\$".

  • -F:: Используйте двоеточие в качестве разделителя
  • $2 ~ /\$/: делает второе поле (пароль), содержит знак доллара
  • print $1: затем распечатайте первое поле (имя пользователя)

факт, пользователь зарегистрирован, не хранится в /etc/shadow.

6
ответ дан 2 December 2019 в 01:25

Значение Вашей команды было объяснено достаточно хорошо дважды, но я хочу добавить, как можно действительно перечислить, все в настоящее время входили в систему пользователи вместо этого:

существует специальная команда для этого, названного who.

Это печатает список зарегистрированных пользователей и их состояний. Если Вы добавляете -a, это также включает пользователей системы; добавление -u (включенный в -a) печатает также процесс входа в систему PID и состояние ожидания.

я просто использую его вместе с -H опция получить некоторые заголовки столбца:

$ who -H
NAME        LINE         TIME             COMMENT
myusername  :0           2016-01-26 08:08 (:0)
myusername  pts/0        2016-01-26 08:16 (:0)

Примечание, которое каждый терминал Вы открываете также, перечислено (значение в LINE, столбец pts/?).

1
ответ дан 2 December 2019 в 01:25

Команда не произведет список пользователей, зарегистрированных в машину; на самом деле команда проанализирует /etc/shadow, то, которое не имеет никакого понятия пользователей, вошло в систему в машину.

Команда произведет список пользователей, которым установили пароль для их учетной записи.

Вот разбивка команды (обратите внимание, что это отнесено конкретно в MAWK, который является версией AWK, установленной на Ubuntu, где, указывая шаблон, включенный в "" корректно и требует того же выхода, требуемого для шаблона, включенного в //, как объяснено в man mawk):

  • -F':': устанавливает разделителя полей (корреспондент к внутреннему AWK FS переменная) к :; это означает, что каждая запись (или строка в этом случае) поля будет splitted на : символ, и это ссылается на такой как $1, $2, $3... сошлется соответственно на первую разграниченную двоеточием строку текущей записи, вторую разграниченную двоеточием строку текущей записи, третью разграниченную двоеточием строку текущей записи....

  • $2 ~ "\$": это - так называемый "шаблон"; это - условие, которое оценено каждый раз, когда запись обрабатывается. Условие в этом случае: если второе поле соответствует regex \$ (т.е. если второе поле содержит символ $), выполните следующее "действие".

  • {print $1}: это - так называемое "действие"; это - блок кода, который выполняется каждый раз, когда предыдущее условие оценивает как TRUE. Это печатает первое поле.

7
ответ дан 2 December 2019 в 01:25

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

Командующий байта уже упомянул who.

skolodya@ubuntu:$ who
xieerqi  :0           2016-01-26 10:52 (:0)
xieerqi  pts/6        2016-01-26 10:52 (:0)
xieerqi  pts/0        2016-01-26 10:55 (:0)

Существует другая команда, w , который покажет более подробный список зарегистрированных пользователей. Это очень полезно, если Вы работаете над сервером, можно проверить, зарегистрирован ли пользователь от надлежащего IP-адреса, сколько ЦП их программы израсходовали и т.д.

skolodya@ubuntu:$ w
 10:56:23 up 4 min,  3 users,  load average: 0.49, 0.55, 0.26
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
xieerqi  :0       :0               10:52   ?xdm?   1:51   0.33s init --user
xieerqi  pts/6    :0               10:52   30.00s  0.01s  0.01s /bin/mksh
xieerqi  pts/0    :0               10:55    0.00s  0.02s  0.00s w

С другой стороны, users произведет просто список имен пользователей, один на вход в систему, поэтому если я буду зарегистрирован в TTY и с два gnome-terminal вкладки это покажет 3 из моих имен пользователей.

skolodya@ubuntu:$ users
xieerqi xieerqi xieerqi

Существует также last команда, которая показывает расширенный список логинов (включая предыдущий). Для в настоящее время входил в систему пользователи, которых это показывает still logged in строка. Знание, что Вы могли отфильтровать вывод last как так:

skolodya@ubuntu:$ last | awk '/still/'                                         
xieerqi  pts/0        :0               Tue Jan 26 10:55   still logged in   
xieerqi  pts/6        :0               Tue Jan 26 10:52   still logged in   
xieerqi  :0           :0               Tue Jan 26 10:52   still logged in 
0
ответ дан 2 December 2019 в 01:25

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

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