Linux последние 5 входов в систему для каждого пользователя

Итак, я пытался получить X последних входов в систему для ВСЕХ пользователей, используя сценарий bash, но знает ли кто-нибудь, как точно извлечь только дату, чтобы я мог создать набор в какой-то таблице ? используя последний, я получаю такой вывод:

yogi     pts/0        192.168.0.103    Fri Nov 18 07:04 - 07:05  (00:00)
yogi     pts/1        10.8.3.6         Thu Nov 17 14:36 - 16:53  (02:17)
yogi     pts/0        10.8.3.6         Thu Nov 17 14:32 - 16:45  (02:12)

и поэтому с awk '{print $ 1, $ 4, $ 5, $ 6,}' я могу зайти только так далеко но есть там далеко, чтобы получить что-то вроде этого:

name surname login date1 date2 date3 date4 etc.

Я немного почесываю голову над этим; /

0
19.11.2016, 16:42
1 ответ

В Gnu awk:

$ cat program.awk
NR==FNR {
    split($5,a,",")
    b[$1]=a[1]
    next
} 
($1 in b) && ++c[$1]<=5 {
    d[$1]=d[$1] $4 " " $5 " " $6 (c[$1]==5?"":OFS)
} 
END {
    for (i in d) 
        print b[i], i, d[i]
}

Запустить:

awk -f program.awk OFS=", " FS=":" /etc/passwd FS=" +" <(last)
James Brown, james, Sat Nov 19, Wed Nov 16, Tue Nov 15, Mon Nov 14, Sun Nov 13

Плохой пример, так как я использую свой ноутбук. Порядок вывода - Gnu awk по умолчанию, т.е. случайный. Если при желании измените порядок перемещения на PROCINFO ["sorted_in"] = "@ ind_str_asc" .

1
28.01.2020, 02:47

Теги

Похожие вопросы