Я тут с удивлением обнаружил, что в debian 13 исчезли команды
last и lastb которые позволяли смотреть удачные/неудачные попытки ssh/sftp🔤🔤🔤🔤🔤🔤🔤
ㅤ
А я к ним так привык...
journalctl — прекрасен, но лазить по логам — так себе занятие.Решил немного упростить, чтобы вывод был в виде таблички:
timestamp ip loginИногда мальчиши-плохиши подсовывают «пустого» пользователя " ", и чтобы число полей было всегда три, я заменяю его на ":", используется в качестве разделителя
/etc/passwd, и поэтому такого логина не должно быть.journalctl --output=short-unix --unit=ssh |
gawk '{match($0,/.*for( invalid user)? +(.*?) +from (([0-9]{1,3}[.]){3}[0-9]{1,3})/,a)
#^ это одна длинная строка
if(a[2]==""){a[2]=":"} # заменили "пробельного usera" на ":"
if(a[3]!="") print $1, a[3],a[2]}'
#Отображение только неудачных попыток
journalctl --output=short-unix --unit=ssh |
gawk '/error: maximum/{match($0,/.*for( invalid user)? +(.*?) +from (([0-9]{1,3}[.]){3}[0-9]{1,3})/,a)
#^это одна длинная строка
if(a[2]==""){a[2]=":"} # заменили "пробельного usera" на ":"
if(a[3]!="") print $1, a[3],a[2]}'
Если нужно ограничить диапазон дат можно использовать ключ
--since="@TIMESTAMP"где
TIMESTAMP дата вида 1773848322.767923 или 1773848322 или просто --since="-1 day"Если не нравится дата в
timestamp замените последнюю строчку на:if(a[3]!="") print strftime("%Y%m%d_%H%M%S",$1), a[3],a[2]}'Или какой-нибудь свой формат. Я, вообще не спец по
regexp, поэтому, если кто-нибудь поможет ускорить выражение — буду благодарен.Всем кода без багов.
🛠 #bash #linux
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog