Estoy trabajando en mi máquina virtual en bash. Se me pide que encuentre todas las direcciones IP que se han utilizado para intentar acceder a la máquina sin autorización, utilizando el archivo auth.log. Parece que no encuentro ninguna respuesta a mi problema. Aquí hay un ejemplo :
todas las líneas devueltas deben escribirse en mi archivo compartido /mnt/analyse/traitement/cueillette.txt. Por favor ayuda ! Gracias
Respuesta1
No es necesario conectar grep a grep (eso es casi siempre una señal de que está adoptando un enfoque ineficiente y equivocado. sed
Solo es suficiente para esta tarea. o awk
. o perl
), y eso sudo su root cat
es simplemente una tontería.
Prueba esto:
$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
/media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt
Por cada línea que coincida con "fallo de autenticación" (nota,no"auténticoficatión"), este sed
script elimina todo desde el principio de la línea hasta (incluido) rhost=
, y todo lo que sigue a la dirección IP, luego imprime la línea.
Utiliza la opción sed
's -E
para expresiones regulares extendidas, de modo que ()
y +
funcione sin necesidad de escapar.
Tenga en cuenta que si bien el sed
comando se ejecuta como root con sudo
, la redirección de salida no lo es; eso se realiza en su shell original no root. Si también necesita privilegios de root para escribir en el archivo de salida, ejecute tee
con sudo
, por ejemplo:
$ 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