Portál AbcLinuxu, 10. května 2025 04:59
#!/bin/bash
grep "port 603" /var/log/ulogd.syslogemu|awk '{print $1,$2,$3, "IP",$10}'
exit 0
jak vidite je opravdu malicky.
Jeho vystupem je neco takoveho:
.
Jul 12 15:55:39 IP SRC=ve.rej.na.ip
.
Jednoduse vyparsuje ze souboru ulogd.syslogemu vsechny pokusy o pripojeni na port 603 z vnejsku site.
Ja bych vas chtel pozadat o nakopnuti, jak zaridit, aby se tento skript spoustel pouze nad novymi zaznamy v souboru ulogd.syslogemu.
Tedy, aby si pamatoval datum posledniho kontrolovaneho radku a pri pristim spusteni kontroloval pouze od tohoto radku dal.
Diky moc za vase reakce.
man logrotate
). Pak zpracovat ten nove vytvoreny "stary" logfile...
/var/log/port603.log
? Krom toho awk
umí taky pattern matching tak nechápu proč kvůli tomu spouštíš grep
.awk '/port 603/ {print $1,$2,$3, "IP",$10}' /var/log/ulogd.syslogemu
#!/bin/bash
mail=jmeno@firma.cz
date=`date +"%A, %d %B, %Y"`
awk '/port 603/ {print $1,$2,$3, "IP",$10}' /var/log/ulogd.syslogemu.1>/tmp/work
if test -s /tmp/work; then
cat /tmp/work|mail -s "Connection report to tcp port 603" $mail
else
echo "No connection to tcp port 603 were made on" $date|mail -s "Connection report to tcp port 603" $mail
fi
rm -f /tmp/work
exit 0
Nastaveni logrotate:
/var/log/ulogd.syslogemu {
daily
missingok
rotate 30
compress
delaycompress
create
postrotate
/etc/init.d/ulogd reload > /dev/null 2>&1 || true
/usr/local/bin/skript.sh
endscript
}
A cele to spoustim cronem kazdou pulnoc:
00 00 * * * root /usr/sbin/logrotate -s /var/log/logrotate.status /etc/skript.logrotate 2>&1
Urcite by to slo udelat elegantneji, ale tohle je zatim to nejlepsi na co se zmuzu.
Pokud byste ve vysledku videli nejakou zasadnejsi chybu, tak mi dejte prosim vedet.
Diky za reakce.
tmpfile=$(mktemp) awk > "$tmpfile" cat -- "$tmpfile" rm -f -- "$tmpfile"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.