- User’s Login date and login time
- 2 Answers 2
- Просмотр истории входа в Linux. Кто и когда входил в систему
- Где хранятся логи входа в систему
- Просмотр истории входа в систему
- Просмотр истории входа для определенного пользователя
- Ограничить количество строк
- Просмотр неудачных попыток входа в систему
- Заключение
- List logged in users (name, terminal, logintime)
- 2 Answers 2
User’s Login date and login time
I want to fetch user’s login time and login date, is there any command in Unix providing User’s login date and User’s login time ? this problem i want to perform in Shell-script where username is accepting from the end-user and after checking the availability of user, i would like to fetch that user’s login time and login date in different variable and then display using ‘echo’ command.
2 Answers 2
Also, the command who lists current logins.
If you’re looking for the date of the user’s last login, some systems provide it directly, for example lastlog -u «$USER_NAME» on Linux or lastlogin «$USER_NAME» on FreeBSD. It’s also available in the output of finger , but not in an easy-to-parse form. In any case, it’s available in the output of last (on many unix variants, last -n 1 «$USER_NAME» shows the last login; otherwise you can do last «$USER_NAME» | head -n 1 ). Note that last login may not correspond to the last logout (e.g. a user remained connected from one origin for a long time and made a quick network login recently).
i know ‘who’ command is providing the login information of all users , but i wants to have «Login-date» and «Login-time», and i dont wants the user information for past login but for a username accepted from a user and want to fetch the information about that user
? last «$username» provides «Login-date» and «Login-time». The second part of your sentence is not clear for me, maybe its my English, maybe its yours. «Username accepted from a user[. ]» ?
@Paresh: I’ve run out of ways to interpret your question. If my answer still doesn’t help, try making your question clearer.
@Paresh : last $USER_NAME will show current users as well. It will show something like username ttyp0 192.168.1.100 Tue Sep 13 13:09 still logged in
@Gilies let me clear what i want to perform actually, i want to make a shell-script in which i accept user-name as «read $username» and then i want to check whether the user is log-on or not , if yes then i want to fetch their login-time and login-date, thanx for the support
Просмотр истории входа в Linux. Кто и когда входил в систему
Данная информация обычно нужна системным администраторам для просмотра истории входа в систему на многопользовательском сервере.
Помимо этого, бывает полезно узнать о неудачных попытках входа. Это могут быть боты, но могут быть и попытки взлома вашего сервера.
Где хранятся логи входа в систему
Информация о том, кто входил (залогинивался) или пытался войти в систему, хранится в лог файлах. Для этого используется три лог-файла:
/var/log/btmp — неудачные попытки входа.
/var/run/utmp — кто в данный момент залогинен (текущие сессии).
/var/log/wtmp — список всех сессий входа в систему.
Эти файлы, в отличии от большинства других лог-файлов Linux, имеют бинарный формат. Если вы попробуете просмотреть их командой cat , то на экран будет выведена «каша». Для их просмотра используется команда last .
Просмотр истории входа в систему
Для просмотра логов входа в систему используется команда last . По умолчанию команда last выводит информацию из файла /var/log/wtmp , в котором хранятся записи обо всех сессиях входа.
yuriy pts/0 181.23.456.189 Sat Mar 23 12:27 still logged in nifnif pts/11 181.45.678.912 Wed Mar 20 05:30 - 05:49 (00:19) nafnaf pts/22 181.45.678.312 Fri Mar 15 00:01 - 02:27 (02:26) nufnuf pts/33 181.45.678.411 Wed Mar 13 11:02 - 11:28 (00:26) .
Как вы можете видеть, выводится таблица с информацией. В ней содержатся имена пользователей, IP-адрес, с которого осуществлялся вход, дата и время входа и продолжительность сессии. Запись вида pts/0 означает, что для входа использовалось SSH соединение (или другое удаленное соединение, например, telnet).
Также выводится информация о включении/выключении системы.
Последняя строка в файле /var/log/wtmp показывает, когда был создан файл.
Просмотр истории входа для определенного пользователя
Чтобы показать информацию о сессиях определенного пользователя, то для команды last необходимо указать имя этого пользователя:
Ограничить количество строк
Иногда лог, который выводит команда last , может быть очень большой. Чтобы ограничить количество выводимых строк, используется опция -n ЧислоСтрок или просто -ЧислоСтрок .
Выведем только десять свежих записей:
Просмотр неудачных попыток входа в систему
Как было сказано выше, записи о неудачных попытках входа в систему хранятся в лог-файле /var/log/btmp .
Команда last по умолчанию выводит информацию из файла /var/log/wtmp . Чтобы вывести информацию из другого файла, используется опция -f ИмяФайла
Выведем записи о неудачных попытках входа (из файла /var/log/btmp ):
Или же можно воспользоваться командой lastb . Команда lastb работает точно также, как и команда last , но выводит информацию из файла /var/log/btmp
Заключение
Мы рассмотрели использование команды last для просмотра информации об истории входа в систему.
Дополнительную информацию по использованию команды last можно получить, выполнив в терминале:
List logged in users (name, terminal, logintime)
I’m trying to print a list of users, who are currently logged on a terminal. It should look like this: I only got this so far: I’m missing the Terminal and the Login time. How can I display them? This is what I got so far:
#!/bin/bash NOWDATE=$(date +"%Y-%m-%d") NOWTIME=$(date +"%T") USERS=$(who | cut -d " " -f1) TERMINAL=0 LOGIN=0 for u in $USERS do echo "$NOWDATE""_""$NOWTIME User: " $u done
hints: cut is a good idea, you could use it for other columns too. In alternative, awk but I suspect it is a more advanced subject that will come up later on
@RuiFRibeiro I’ve used awk and it’s working fine USERS=$(who | awk ‘
@RuiFRibeiro this is how it looks like when I want to give out $u of $USERS in a for-loop: fs5.directupload.net/images/151115/f29j4on4.png I’ve used the awk-command like this: USERS=$(who | awk »
2 Answers 2
Parsing the output of w is probably a better approach than who . Here are some representative data, which shows the login time:
$ who tom pts/1 2015-11-15 06:39 (michener:S.0) $ w 06:40:10 up 1:04, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tom pts/1 michener:S.0 06:39 2.00s 0.03s 0.00s w
Those are more widely available than finger . Since this is a classroom exercise, parsing the data is left to OP. As a hint, awk can do more than print its fields in a one-liner:
- Typically, one would handle the output of w by having in the awk script a BEGIN section (to set a line-number or state).
- Then, a default action for each line (just curly braces with no pattern) would increment the line number.
- Using the line number, handle the first line specially (skip it in this case: OP may need the number of users for a report header, but that is not used in OP’s example), and skip the line with USER .
- After that, each line can be printed as OP needs. awk will quit when there is no more data; it is not necessary to know the number of users to do this.
If OP is told to use who , that has options to list more information, e.g.,
$ who -l -u LOGIN tty5 2015-11-15 05:36 3670 tty6 2015-11-15 05:36 3671 tty4 2015-11-15 05:36 3669 tty3 2015-11-15 05:36 3668 tty2 2015-11-15 05:36 3667 tty1 2015-11-15 05:36 3666 pts/1 2015-11-15 06:39 00:06 5780 (michener:S.0) tom pts/2 2015-11-15 06:52 . 6078 (michener:S.1)
again, showing the terminal name and the login times.