
Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ssh2
Estoy buscando la palabra contraseña. Una vez que lo encuentre, quiero buscar cualquier cosa asociada con el sshd[67299]
número e imprimirlo.
Respuesta1
$ echo "Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ss" | sed 's/.*\[\(.*\)\].*/\1/'
67299
(descartar todo, menos lo que está entre paréntesis).
Respuesta2
Esto debería funcionar para ti
grep password my_log.txt | sed 's/.*sshd\[\(.*\)\].*/\1/'
grep password my_log.txt
obtiene todas las líneas con contraseña.
sed 's/.*sshd\[\(.*\)\].*/\1/'
encuentra el []
después sshd
y obtiene el PID dentro de él.
No especificó esto en su pregunta, pero también puede canalizarlo para sort -u
filtrar duplicados.
Actualizar
Aunque en mi opinión es menos legible, también puedes hacerlo todo en una sola sed
línea.
sed -e '/password/!d;s/.*sshd\[\(.*\)\].*/\1/' my_log.txt