Linux login time user

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[. ]» ?

Читайте также:  Установка zabbix agent astra linux

@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. Кто и когда входил в систему

Кто и когда входил в Linux. Команда Last

Данная информация обычно нужна системным администраторам для просмотра истории входа в систему на многопользовательском сервере.

Помимо этого, бывает полезно узнать о неудачных попытках входа. Это могут быть боты, но могут быть и попытки взлома вашего сервера.

Где хранятся логи входа в систему

Информация о том, кто входил (залогинивался) или пытался войти в систему, хранится в лог файлах. Для этого используется три лог-файла:
/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).

Читайте также:  Linux hard link у soft link

Также выводится информация о включении/выключении системы.

Последняя строка в файле /var/log/wtmp показывает, когда был создан файл.

Просмотр истории входа в систему. Команда Last

Просмотр истории входа для определенного пользователя

Чтобы показать информацию о сессиях определенного пользователя, то для команды last необходимо указать имя этого пользователя:

Команда last username

Ограничить количество строк

Иногда лог, который выводит команда 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: enter image description here I only got this so far: enter image description here 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 ‘‘ but I don’t know how I can display the output in a seperate row like above

Читайте также:  Linux run command with user

@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.

Источник

Оцените статью
Adblock
detector