Estou usando o script zabbix_sender.sh
do Zabbix para enviar os rastreamentos de pilha de exceção para o meu servidor de monitoramento remoto do Zabbix.
zabbix_sender.sh
requer uma chave e um valor para os dados que envia. Ele pode ler dados de stdin
, mas isso substitui qualquer variável de chave especificada. Como meus dados stdin
não são formatados como o Zabbix espera, preciso passar "valor" como argumento. Espero que isso forneça algum contexto.
O que eu quero realizar é capturar o resultado de múltiplas linhas de grep
em uma variável, preservando as novas linhas, para que eu possa chamar o script zabbix_sender.sh
com essa variável como um argumento.
O que eu tentei até agora parece com isso:
tail -Fn0 /var/log/uwsgi.log | grep "Exception:" -A 100 | (read tback; /usr/local/zabbix/bin/zabbix_sender -z myzserver.com -s MyHostName -k uwsgi_traceback -o $tback)
Como melhor eu posso dizer, isso nunca invoca zabbix_sender.sh
.
Para testar, tentei usar este comando, que também não parece funcionar:
tail -Fn0 /var/log/uwsgi.log | grep "Exception:" -A 100 | (read errorlines; echo "$errorlines" > /tmp/errorlines.txt)
O arquivo /tmp/errorlines.txt
nunca é criado.
Como posso capturar as linhas de saída de grep
em uma variável para que eu possa chamar outro script com essa variável como argumento?