Parar de mostrar a saída do comando em segundo plano

3

Eu tenho um liner que gravará a saída de uma sessão telnet em um arquivo.

while sleep 5; do sleep 1 | telnet 11.22.33.44 443 | tee -a /var/tmp/test$(date +%Y%m%d).txt && date >> /var/tmp/test$(date +%Y%m%d).txt; done &

Eu não quero ver a saída do primeiro comando, mas gostaria de executar este 1 liner e mostrar a saída:

awk '!/Trying/{count++}/Trying/{if (count == 4) print "Connected"; else if (count == !NR) print ""; else print "Failed"; count = 0}' test$(date +%Y%m%d).txt

Bônus se! pode obter ambos em 1 linha para mostrar a saída como abaixo:

while sleep 5; do sleep 1 | telnet 159.203.162.223 443 | tee -a /var/tmp/test$(date +%Y%m%d).txt && date >> /var/tmp/test$(date +%Y%m%d).txt; done & awk '!/Trying/{count++}/Trying/{if (count == 4) print "Connected"; else if (count == !NR) print ""; else print "Failed"; count = 0}' test$(date +%Y%m%d).txt
Connected
Connected
Connected
Connected
Connected
Connected
Connected
Connected
Connected
Connected
    
por Anthony Fornito 25.09.2018 / 17:54

1 resposta

1

Se possível, convém considerar o uso de netcat ( nc ) em vez de tentar analisar telnet output. Por exemplo:

$ while sleep 5; do nc -C 93.184.216.34 443 </dev/null && echo "Connected" | tee -a /var/tmp/test$(date +%Y%m%d).txt && date >> /var/tmp/test$(date +%Y%m%d).txt; done
Connected
Connected
Connected
Connected
^C

-

$ cat /var/tmp/test20180925.txt
Connected
Tue Sep 25 16:42:57 UTC 2018
Connected
Tue Sep 25 16:43:02 UTC 2018
Connected
Tue Sep 25 16:43:07 UTC 2018
Connected
Tue Sep 25 16:43:12 UTC 2018

Tente isso um pouco mais perto do que você está procurando

while sleep 5; do sleep 1 | nc -v 159.203.162.223 443 2>&1; echo $(date) >> /var/tmp/test$(date +%Y%m%d).txt; done >> /var/tmp/test$(date +%Y%m%d).txt & tail -f /var/tmp/test$(date +%Y%m%d).txt | grep 'Connected\|timed\|refused'
    
por 25.09.2018 / 18:45

Tags