Executando comandos após saídas baseadas em eventos

3

existem comandos como

iwevent

ou

tcpdump -n src host x.x.x.x

que enviam para o stdout algumas linhas quando algo acontece. Existe alguma forma de executar algum comando imediatamente depois que uma linha é impressa. Ex:

iwevent | echo "Wireless event happened"
    
por Nico Rodsevich 11.10.2013 / 00:20

2 respostas

4

Apenas leia stdin em um loop

iwevent | while IFS= read -r line; do
    echo "[$(date "+%F %T")] - $line"
done

Dependendo do que você faz no corpo do loop, talvez queira

while IFS= read -r line; do
    echo "[$(date "+%F %T")] - $line"
done < <(iwevent)

Isso evita os efeitos subversivos implícitos do uso de um pipeline.

    
por 11.10.2013 / 00:42
3

Não tenho certeza se entendi o que você quer dizer, mas algo na direção disso?

while IFS= read -r line; do
    printf "%s\n%s\n" "$line" "Yohooo! One more package."
done < <(tcpdump -i any -nS)
    
por 11.10.2013 / 00:42