Bash: Finde alle IP-Adressen, die für einen nicht autorisierten Zugriffsversuch verwendet wurden

Bash: Finde alle IP-Adressen, die für einen nicht autorisierten Zugriffsversuch verwendet wurden

Ich arbeite an meiner virtuellen Maschine auf Bash. Ich werde aufgefordert, alle IP-Adressen zu finden, die für einen Versuch verwendet wurden, ohne Autorisierung auf die Maschine zuzugreifen. Dazu wird die Datei auth.log verwendet. Ich scheine keine Antwort auf mein Problem zu finden. Hier ist ein Beispiel:Bildbeschreibung hier eingeben

Alle zurückgegebenen Zeilen müssen in meine freigegebene Datei /mnt/analyse/traitement/cueillette.txt geschrieben werden. Bitte helfen Sie! Danke

Antwort1

Sie müssen grep nicht in grep weiterleiten (das ist fast immer ein Zeichen dafür, dass Sie einen ineffizienten, fehlgeleiteten Ansatz wählen. sedallein reicht für diese Aufgabe aus. oder awk. oder perl), und das sudo su root catist einfach Unsinn.

Versuche dies:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

Für jede Zeile, die mit „Authentifizierungsfehler“ übereinstimmt (Hinweis:nicht"authentifikation"), dieses sedSkript entfernt alles vom Zeilenanfang bis (einschließlich) rhost=und alles nach der IP-Adresse und druckt dann die Zeile.

Es nutzt seddie -EOption für erweiterte reguläre Ausdrücke, sodass ()und +ohne Escapezeichen funktionieren.

Beachten Sie, dass der sedBefehl zwar als Root mit ausgeführt wird sudo, die Ausgabeumleitung jedoch nicht – diese wird in Ihrer ursprünglichen Nicht-Root-Shell durchgeführt. Wenn Sie Root-Berechtigungen benötigen, um auch in die Ausgabedatei zu schreiben, führen Sie ihn teemit aus sudo, z. B.:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

verwandte Informationen