Linux: как получить все логины из моей системы [закрыто]

12

Я хочу знать, сколько раз пользователь заходит в мою систему с прошлого года?
Я использовал lastкоманду, но это не полезно.

gabo34
источник
1
добро пожаловать в стек обмена! пожалуйста, помните, что мы все здесь добровольцы. поэтому мы ожидаем, что вы провели какое-то фундаментальное исследование. похоже , у вас есть начало - так как вы упоминаете попробовав lastкоманду - но вы должны делать больше исследований , чем это, и в любом случае, вы на самом деле не указаны , почемуlast команда не является полезной. также, определите «вошли в систему». Вы хотите отслеживать входы в консоль? SSH логины? Emacs запрещают, telnetлогины? или просто что-нибудь аутентифицирующееся с PAM? быть конкретным .
Струги

Ответы:

10

Журналы входа в Linux в стиле Redhat называются wtmp( man wtmp), хранятся /var/log/по умолчанию, и вы можете получить их, используя utmpdump(в RHEL6).

[root@server ~]# utmpdump /var/log/wtmp* | awk '$4~"root" {print}'
Utmp dump of /var/log/wtmp
[7] [01320] [ts/0] [root    ] [pts/0       ] [192.168.1.101       ] [192.168.1.101  ] [Tue Sep 24 00:31:47 2013 UTC]
[7] [01817] [ts/3] [root    ] [pts/3       ] [192.168.1.101       ] [192.168.1.101  ] [Tue Sep 24 00:38:22 2013 UTC]
[7] [01690] [ts/0] [root    ] [pts/0       ] [192.168.1.101       ] [192.168.1.101  ] [Tue Sep 24 00:59:04 2013 UTC]
[7] [23641] [ts/0] [root    ] [pts/0       ] [192.168.1.101       ] [192.168.1.101  ] [Wed Sep 25 19:12:44 2013 UTC]
[7] [03020] [ts/0] [root    ] [pts/0       ] [192.168.1.100       ] [192.168.1.100  ] [Fri Sep 27 21:33:40 2013 UTC]
...
Томас
источник
1

Кажется, lastможно использовать для достижения того, что вы пытаетесь сделать. Вам нужно добавить дату к последней команде, чтобы извлечь информацию.

last | while read line; do date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`; [[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line; done

Однако, если вы заинтересованы в поиске информации о конкретном пользователе, вы можете изменить последнюю команду как, last usernameа затем направить whileцикл к ней. Это даст вам информацию о логине конкретного пользователя за последний год.

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

Вы можете изменить дату в команде в соответствии с вашими требованиями.

Рамеш
источник