Как с помощью awk получить количество входов в систему каждый день в текущем месяце?

Возможно, даже более эффективное решение, использующее только grep(, требует GNU grep или grep, поддерживающего регулярное выражение perl):

nmap -sP 192.168.3.0/24 \
  | grep -o -P '192.168.3.(?!1$)[0-9]+'

Это greping для -o (только )IP-адрес, соответствующий любому IP-адресу, начинающемуся с 192.168.3, кроме192.168.3.1

3
26.04.2020, 16:47
2 ответа

Вы можете использовать его, как показано ниже:

last <user>  | awk -v dt="$(date +%b)" '$5==dt{ k[$5$6]+=1; a[$5$6]=$5"-"$6"-"$7  } END { for ( i in k ) { split(a[i],s,"-");print s[1]" "s[2]": "k[i]" No of Logins"  } }' | sort -n -k2

Для не -определенных для пользователя:

last | grep -ve reboot -ve wtmp | awk -v dt="$(date +%b)" '$5==dt{ k[$5$6]+=1; a[$5$6]=$5"-"$6"-"$7  } END { for ( i in k ) { split(a[i],s,"-");print s[1]" "s[2]": "k[i]" No of Logins"  } }' | sort -n -k2

ИЛИ

Список пользователей:

last | grep -ve reboot -ve wtmp | awk -v dt="$(date +%b)" '$5==dt{ k[$1$5$6]+=1; a[$1$5$6]=$1"-"$5"-"$6"-"$7  } END { for ( i in k ) { split(a[i],s,"-");print s[1]" "s[2]" "s[3]": "k[i]" No of Logins"  } }' | sort -n -k3
3
19.03.2021, 02:25

Большое спасибо за ответ Сталина Вигнеша Кумара. Этот код будет отображать только текущий месяц, как определено системным месяцем(датой +%b ), отфильтровать пользователя перезагрузки, который отображается в выводе последней команды всякий раз, когда система загружается, и отобразить все логины пользователя. Я обновлю свой ответ, если смогу понять, как добавить ведущие нули к выходным данным в соответствующих переменных:

#!/bin/bash
last | grep `date +%b` | grep -v -e "reboot" | awk ' { k[$5$6]+=1; a[$5$6]=$5"-"$6"-"$7  } END { for ( i in k ) { split(a[i]"\n",s,"-");print s[1]" "s[2]": "k[i]" logins"  } }' | sort -n -k2
0
19.03.2021, 02:25

Теги

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