Подсчитать количество login-ов (Подсчитать количество login-ов)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Michelin
Сообщения: 16

Подсчитать количество login-ов

Сообщение Michelin »

Попробовал написать команду вычисляющую количество 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. А как отбросить лишнее?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Подсчитать количество login-ов

Сообщение serzh-z »

last | grep '^root' | grep May | wc -l
Спасибо сказали:
Аватара пользователя
rubtsov
Сообщения: 140
ОС: Slackware

Re: Подсчитать количество login-ов

Сообщение rubtsov »

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-ов

Сообщение Michelin »

last | grep '^root' | grep May | wc -l
Таким макаром можно только про rootа узнать, а если пользователей много? Я ведь всех незнаю, мне нужно подсчитать их общее количество выполненных loginов за произвольный месяц.
Спасибо сказали:
Michelin
Сообщения: 16

Re: Подсчитать количество login-ов

Сообщение Michelin »

Посоветовали ещё вот так сделать:
last | grep May | awk '{print $1}' | sort | uniq -c
но так считает количество loginов по каждому пользователю, только файл wtmp тоже считает, а это же не пользователь. Нужно общее число всех выполненных логинов пользователями, а не по отдельности. А можно как нибудь добраться до названия первого столбца и использовать его в поиске? К примеру на команду df тоже выводится таблица, но столбцы имеют наименования (filesystem, и т.д.) и в дальнейшем при поиске или сортировке можно этим названием манипулировать. Вот и я хотел в моём случае попробовать так сделать - задать поиск только по строкам из столбца пользователей, чтоб служебные данные по файлу wtmp не учитывались. Перерыл кучу литературы чтоб найти примеры на команду last с отображением имён столбцов, но так и не нашёл. И ещё загвоздка, время по команде last не показывает какой год, а как быть, если файл ведётся несколько лет и на запрос, к примеру, по месяцу Май он выдаст информацию по всем годам, а нужно то только по определённому году?
Спасибо сказали:
Аватара пользователя
rubtsov
Сообщения: 140
ОС: Slackware

Re: Подсчитать количество login-ов

Сообщение rubtsov »

совет может быть и не "в духе линукса", но я бы сделал перенаправление выводы команды last в файл, и написал программу например на C, обрабтывающую текстовый файл. Возможностей работы со строковыми данными C хватит на многое.
Спасибо сказали:
Michelin
Сообщения: 16

Re: Подсчитать количество login-ов

Сообщение Michelin »

Выходит стандартными средствами данную задачу не решить?
Спасибо сказали:
Michelin
Сообщения: 16

Re: Подсчитать количество login-ов

Сообщение Michelin »

Подсказали, что надо исключить строчку со служебной информацией и тогда всё нормально вычисляется:
last | grep May | grep -v begins | wc -l
А вот как по годам делать непонятно.
Спасибо сказали:
Michelin
Сообщения: 16

Re: Подсчитать количество login-ов

Сообщение Michelin »

А так вычисляются только пользователи без всяких фантомов вроде inrunlevel и reboot:
last |grep May | egrep '[a-z]{1,4}/[0-9]{1,4}' | wc -l
Спасибо сказали: