[SOLVED] IP address list átadása mikrotiknek ssh-n keresztül

A lista tartalmának csak az első tagja kerül bele a kívánt JailIP listbe, tudom, hogy szintaktikai gondom van, de jövök rá...

 

#!/bin/bash
more /var/log/mail.log |grep -e "warning: unknown\[" |cut -d [ -f 3,3 |cut -d ] -f 1,1 |sort -u > jailips 
while read ip 
         do ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 "ip firewall address-list add address=$ip list=JailIP" 
         done < jailips

 megoldás:

#!/bin/bash
more /var/log/mail.log |grep -e "warning: unknown\[" |cut -d [ -f 3,3 |cut -d ] -f 1,1 |sort -u > jailips 
while read ip 
         do ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 "ip firewall address-list add address=$ip list=JailIP" < /dev/null
         done < jailips

Hozzászólások

Nyilván ez egy működő megoldás, de nem lenne elegánsabb és hatékonyabb, ha lenne egy script a MT-en erre, és a mail.log-os gépről csak egy scp hívás (lista feltöltése), és egy ssh hívás (script futtatása) menne csak? Vagy még inkább a script scheduler-rel futhatna, és ha megjelenik a lista feldoglozza és törli... Akkor csak egy scp az egész.

Egyébként ha a /dev/null input helyett csak egy pontosvesszőt teszel a MT utasítás sor végére (szabályos utasítás vége jel), az nem elég? Ez a /dev/null az életbe nem jutott volna eszembe, de megjegyzem, hát ha kell egyszer!

A cat simán stdout-ra küld mindent, a less és a more kifejezetten konzolos használatra, scrollozhatóan jelenít meg. Képernyő nélküli kimentet esetén vajójában csak a cat-nak van értelme, a másik kettőnek nem (sőt, szerintem, ha nem képernyő a kimenet, akkor cat-ként viselkednek).

A less és a more közül a less az okosabb, a more az egyszűbb.

annyira elvagyok merülve a hülyeségemben, hogy most fogom fel, mit more-zik itt mindenki :D :D :D 

"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */

ez a megoldás mennyivel jobb egyébként mint egy "sima" fail2ban?

fail2ban-nal akad egy pár gondom, pl a log-ok rotálását nem kedveli, de ez a legkisebb.
Lehet, hogy érződni fog a paranoiám, de a spam botok szépen megnövelték a számukat és az időintervallumokat a próbálkozások között.
Így soha nem bannolódnak.

Nem mellesleg nem én vagyok az első akinek, hasonló gondolatai támadnak: https://wiki.mikrotik.com/wiki/Use_Mikrotik_as_Fail2ban_firewall

"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */

Pár megjegyzés:

1. Hacsak nincs szükséged a "jailips" fájlra, akkor nem írnám ki az IP-ket, hanem a while részt vinném tovább... Mellesleg tee-vel ekkor is lementhető a pipe tartalma.

2. A megoldásod többször indít SSH kapcsolatot, ami egy részről pazarlás, más részről lassít sok IP esetén.

 

Én így csinálnám (Nem teszteltem!):

 

#!/bin/bash

grep -Po "((?<=warning: unknown\[)(.*?)(?=\]))" /var/log/mail.log | sort -u | \
ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 \
"xargs -in1 ip firewall address-list add address={} list=JailIP"

Debian Linux rulez... :D
RIP Ian Murdock

 maszatolunk, maszatolunk....., egyébként az IP-kre az esetleges későbbi "ügyekre" lenne szükség.

#!/bin/bash
MAINAP=`date +%Y%m%d`
grep -Po "((?<=warning: unknown\[)(.*?)(?=\]))" /var/log/mail.log | sort -u | 
grep -Po "((?<=RCPT from unknown\[)(.*?)(?=\]))" /var/log/mail.log |sort -u >> jailips
while read ip
    do whois -h whois.radb.net $ip |grep "route:" >> route
    done < jailips
cat route | awk '{print $2}'|sort -u> route2

while read  ip
    do ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 "ip firewall address-list add address=$ip list=JailIP" < /dev/null
        done < route2
#rm -rf jailips
mv jailips $MAINAP.jailips
rm -rf route
rm -rf route2

"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */