Возможно, даже более эффективное решение, использующее только 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
Вы можете использовать его, как показано ниже:
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
Большое спасибо за ответ Сталина Вигнеша Кумара. Этот код будет отображать только текущий месяц, как определено системным месяцем(датой +%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