grepping com dois argumentos e o piping through sendemail fornece dados indesejados adicionais não mostrados quando apenas grepping

0

Este é um estranho. Eu tenho um arquivo de texto de cerca de 5MB que é gerado através de um pipe de uníssono para um log. Se eu pesquisar o log assim, tudo bem:

grep -A1 -B1 "Nothing\|fail" /var/log/csync/logfile_20180720000001.log

Eu obtive a saída esperada para a tela, que tem 31 linhas de comprimento. No entanto, quero enviar essa saída para um email de departamentos. Devido a sendemail ser exigente sobre o que você pode colocar em seu campo de mensagem não posso fazer o seguinte "" e não posso descobrir como escapar com sendemail:

sendemail -f [email protected] -t [email protected] -u NFS Replication Report -m "$(grep -A1 -B1 "Nothing\|fail" /var/log/csync/logfile_20180720000001.log)" -s emailserver

Em vez disso, estou fazendo:

grep -A1 -B1 "Nothing\|fail" /var/log/csync/logfile_20180720000001.log | sendemail -f [email protected] -t [email protected] -u NFS Replication Report -s emailserver

Quando faço isso, recebo o e-mail, mas ele contém muito do arquivo de texto em que corri o grep, que não deveria estar enviando, não é a mesma saída do grep. Tem as primeiras 15 linhas, um monte de texto que o grep não deveria combinar, e o restante na parte inferior. A parte chata é que, se eu fizer uma busca por uma única string de dados, ela funcionará perfeitamente:

grep -A1 -B1 fail /var/log/csync/logfile_20180720000001.log | sendemail -f [email protected] -t [email protected] -u NFS Replication Report -s emailserver

ou

sendemail -f [email protected] -t [email protected] -u NFS Replication Report -s emailserver -m "$(grep -A1 -B1 fail /var/log/csync/logfile_20180720000001.log)"

Alguém tem alguma ideia?

    
por g33kphr33k 20.07.2018 / 10:27

0 respostas