Попробовал написать команду вычисляющую количество login-ов выполненных пользователями в мае месяце текущего года.
При вводе команды last выводится:
root vc/1 Sun May 14 22:48 still logged
inrunlevel ~ 2.4.19-xfs Sun May 14 22:48
reboot ~ 2.4.19-xfs Sun May 14 22:48
wtmp degins Sun May 14 22:48:49 2006
А после ввёл last | grep May | wc -l и получилось:
4
Но ведь я один в системе залогинился и только один раз, а выходит - все четыре.Похоже посчитались все строки, где есть May. А как отбросить лишнее?
Подсчитать количество login-ов (Подсчитать количество login-ов)
Модератор: Bizdelnick
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Подсчитать количество login-ов
last | grep '^root' | grep May | wc -l
-
rubtsov
- Сообщения: 140
- ОС: Slackware
Re: Подсчитать количество login-ов
Michelin писал(а): ↑15.05.2006 13:21Попробовал написать команду вычисляющую количество login-ов выполненных пользователями в мае месяце текущего года.
При вводе команды last выводится:
root vc/1 Sun May 14 22:48 still logged
inrunlevel ~ 2.4.19-xfs Sun May 14 22:48
reboot ~ 2.4.19-xfs Sun May 14 22:48
wtmp degins Sun May 14 22:48:49 2006
А после ввёл last | grep May | wc -l и получилось:
4
Но ведь я один в системе залогинился и только один раз, а выходит - все четыре.Похоже посчитались все строки, где есть May. А как отбросить лишнее?
last выводит записи и для псевдопользователей. Это специальные учетные записи, которые используются некоторыми программами. Псевдопользователи регистрируются в системе без помощи монитора и клавиатуры, их точка входа в систему (во второй колонке) не определена.
Например по записи reboot можно посмотреть когда была загружена система.
Поэтому и записей находит 4
-
Michelin
- Сообщения: 16
Re: Подсчитать количество login-ов
last | grep '^root' | grep May | wc -l
Таким макаром можно только про rootа узнать, а если пользователей много? Я ведь всех незнаю, мне нужно подсчитать их общее количество выполненных loginов за произвольный месяц.
Таким макаром можно только про rootа узнать, а если пользователей много? Я ведь всех незнаю, мне нужно подсчитать их общее количество выполненных loginов за произвольный месяц.
-
Michelin
- Сообщения: 16
Re: Подсчитать количество login-ов
Посоветовали ещё вот так сделать:
last | grep May | awk '{print $1}' | sort | uniq -c
но так считает количество loginов по каждому пользователю, только файл wtmp тоже считает, а это же не пользователь. Нужно общее число всех выполненных логинов пользователями, а не по отдельности. А можно как нибудь добраться до названия первого столбца и использовать его в поиске? К примеру на команду df тоже выводится таблица, но столбцы имеют наименования (filesystem, и т.д.) и в дальнейшем при поиске или сортировке можно этим названием манипулировать. Вот и я хотел в моём случае попробовать так сделать - задать поиск только по строкам из столбца пользователей, чтоб служебные данные по файлу wtmp не учитывались. Перерыл кучу литературы чтоб найти примеры на команду last с отображением имён столбцов, но так и не нашёл. И ещё загвоздка, время по команде last не показывает какой год, а как быть, если файл ведётся несколько лет и на запрос, к примеру, по месяцу Май он выдаст информацию по всем годам, а нужно то только по определённому году?
last | grep May | awk '{print $1}' | sort | uniq -c
но так считает количество loginов по каждому пользователю, только файл wtmp тоже считает, а это же не пользователь. Нужно общее число всех выполненных логинов пользователями, а не по отдельности. А можно как нибудь добраться до названия первого столбца и использовать его в поиске? К примеру на команду df тоже выводится таблица, но столбцы имеют наименования (filesystem, и т.д.) и в дальнейшем при поиске или сортировке можно этим названием манипулировать. Вот и я хотел в моём случае попробовать так сделать - задать поиск только по строкам из столбца пользователей, чтоб служебные данные по файлу wtmp не учитывались. Перерыл кучу литературы чтоб найти примеры на команду last с отображением имён столбцов, но так и не нашёл. И ещё загвоздка, время по команде last не показывает какой год, а как быть, если файл ведётся несколько лет и на запрос, к примеру, по месяцу Май он выдаст информацию по всем годам, а нужно то только по определённому году?
-
rubtsov
- Сообщения: 140
- ОС: Slackware
Re: Подсчитать количество login-ов
совет может быть и не "в духе линукса", но я бы сделал перенаправление выводы команды last в файл, и написал программу например на C, обрабтывающую текстовый файл. Возможностей работы со строковыми данными C хватит на многое.
-
Michelin
- Сообщения: 16
Re: Подсчитать количество login-ов
Выходит стандартными средствами данную задачу не решить?
-
Michelin
- Сообщения: 16
Re: Подсчитать количество login-ов
Подсказали, что надо исключить строчку со служебной информацией и тогда всё нормально вычисляется:
last | grep May | grep -v begins | wc -l
А вот как по годам делать непонятно.
last | grep May | grep -v begins | wc -l
А вот как по годам делать непонятно.
-
Michelin
- Сообщения: 16
Re: Подсчитать количество login-ов
А так вычисляются только пользователи без всяких фантомов вроде inrunlevel и reboot:
last |grep May | egrep '[a-z]{1,4}/[0-9]{1,4}' | wc -l
last |grep May | egrep '[a-z]{1,4}/[0-9]{1,4}' | wc -l