Q seu problema
é que o grep imprime a linha que casou e depois vc manda
imprimir. Vou rearrumar seu código para otimizá-lo.
while read line
do
if grep
-Fq "authentication failure" <<< $line
then
echo "$line"
fi
done < <(journalctl -f -n1)
Esse primeiro
foi para otimizar a tua lógica, mas eu faria
simplesmente:
journalctl -f
-n1 | grep -F "authentication failure"
Julio
» Não tem tempo para fazer um curso
presencial?
» Na sua cidade não tem nenhum bom curso
de Linux?
» Em outubro abriremos uma semana de
inscrições
»
para uma nova turma.
Veja mais
detalhes em:
Também
damos
treinamento em
sua empresa
em qualquer cidade, com certificado e
nota fiscal.
Boa Noite
Tenho um script lendo o log através do
journalctl e quando executo o
mesmo ele roda curiosamente duas vezes.
Então quando encontra a palavra failure ele
exibe duas vezes a menagem
duas vezes pois existem duas instancias do
processo.
julio 2182 0.0 0.0 12892 3124 ?
S 10:57 faillog.sh
julio 2185 0.0 0.0 13004 2132 ?
S 10:57 faillog.sh
no exemplo
out 11 10:59:05 julio- sudo[3210]:
pam_unix(sudo:auth): authentication
failure; logname=julio uid=1000 euid=0
tty=/dev/pts/4 ruser=julio rhost=
user=julio
out 11 10:59:05 julio- sudo[3210]:
pam_unix(sudo:auth): authentication
failure; logname=julio uid=1000 euid=0
tty=/dev/pts/4 ruser=julio rhost=
user=julio
O código fonte :
journalctl -f -n1 | \
while read line ; do
#
#echo "$line"
echo "$line" | grep "authentication
failure"
if [ $? = 0 ]
then
echo "$line"
fi
done