Preciso de ajuda para quebrar o seguinte script, para entender o que o autor estava tentando fazer. O script destina-se a procurar um arquivo de log por dados e, em seguida, compará-lo a um arquivo de log de email. As diferenças entre os dois arquivos são enviadas por e-mail para 'pessoas'. O script foi recentemente retornando falsos positivos.
cat /Shared\ Items/CIF_FILES/logs/applicants/applicants.log |
grep 'date "+%Y:%m:%d"' |
while read line; do grep "'date "+%d/%b/%Y"'" /usr/local/kerio/mailserver/store/logs/mail.log |
grep 'echo $line |awk '{print $5}' |rev | cut -c 2-| rev' |
grep -q 'echo $line |awk '{print $8}'' || echo $line; done |
mailx -s "Applicants Without Notification For 'date "+%d/%b/%Y"'" '[email protected], [email protected], [email protected]'
O que eu posso dizer até agora ...
-
cat
file application.log
- pipe
cat
results e grep
Date / Time no formato Y:M:D
- Ao fazer o acima,
grep
Data / Hora no formato D:M:Y
do arquivo mail.log
.
- Aqui é onde eu misturo, parece que
grep
-s novamente, echo
-es resulta em uma variável e, em seguida, usa awk
para formatar os dados de uma maneira específica. / li>
- Em seguida, ele obtém os resultados formatados e
echo
-es dos dados armazenados na variável e os envia por e-mail para as pessoas que devem ser notificadas.
PERGUNTAS:
- Existe uma maneira mais eficiente de escrever este script? O tubo parece ser usado demais.
- Se o script estiver retornando falsos positivos, onde está a causa mais provável do problema?
Aqui está um recorte do arquivo candidates.log:
2017:11:26 - 06:03 - Couch, Danny / 100899-Video Production Specialist
2017:11:26 - 09:14 - Brown, Don / 100899-Video Production Specialist
2017:11:26 - 09:32 - Stanford, David / 100916-Creative Services Team Manager
Aqui está um recorte do arquivo mail.log:
[26/Nov/2017 06:03:44] Recv: Queue-ID: 5a1aada0-000006fa, Service: SMTP, From: <[email protected]>, To: <[email protected]>, Size: 9571, Sender-Host: mail-sn1nam01lp0119.outbound.protection.outlook.com, SSL: yes, Subject: CIF: 100899-Video Production Specialist: Danny Couch, Msg-Id: <[email protected]>
[26/Nov/2017 06:03:46] Sent: Queue-ID: 5a1aada0-000006fa, Recipient: <[email protected]>, Result: delivered, Status: 2.0.0 , Remote-Host: 127.0.0.1, Msg-Id:
[26/Nov/2017 09:14:27] Recv: Queue-ID: 5a1ada53-00000713, Service: SMTP, From: <[email protected]>, To: <[email protected]>, Size: 9886, Sender-Host: mail-by2nam01lp0181.outbound.protection.outlook.com, SSL: yes, Subject: CIF: 100899-Video Production Specialist: Don Brown, Msg-Id: <[email protected]>
[26/Nov/2017 09:14:28] Sent: Queue-ID: 5a1ada53-00000713, Recipient: <[email protected]>, Result: delivered, Status: 2.0.0 , Remote-Host: 127.0.0.1, Msg-Id: <[email protected]>
[26/Nov/2017 09:32:40] Recv: Queue-ID: 5a1ade98-00000719, Service: SMTP, From: <[email protected]>, To: <[email protected]>, Size: 8807, Sender-Host: mail-bn3nam01lp0176.outbound.protection.outlook.com, SSL: yes, Subject: CIF: 100916-Creative Services Team Manager: David Stanford, Msg-Id: <[email protected]>
[26/Nov/2017 09:32:42] Sent: Queue-ID: 5a1ade98-00000719, Recipient: <[email protected]>, Result: delivered, Status: 2.0.0 , Remote-Host: 127.0.0.1, Msg-Id: <[email protected]>
Aqui está o e-mail resultante que é enviado para as pessoas no final da parte de e-mail do script:
Subject: Applicants Without Recruiter Notification For 26/Nov/2017
Message-ID: <[email protected]>
Date: Sun, 26 Nov 2017 23:55:00 -0600
From: System Administrator <[email protected]>
Return-Path: [email protected]
2017:11:26 - 06:03 - Couch, Danny / 100899-Video Production Specialist
2017:11:26 - 09:14 - Brown, Don / 100899-Video Production Specialist
2017:11:26 - 09:32 - Stanford, David / 100916-Creative Services Team Manager
Portanto, a notificação resultante (Aplicativos sem notificações) só deve ocorrer quando houver uma entrada no arquivo applicants.log
que não tenha uma entrada correspondente no arquivo mail.log
. Portanto, se não houvesse nenhuma entrada no arquivo mail.log
para David Stanford, a notificação refletiria APENAS que o servidor de email não recebeu um email para David Stanford. Não diria isso para Danny Couch ou Don Brown porque ele encontraria seus nomes no arquivo mail.log
. Em vez disso, o script está gerando a notificação para todos os aplicativos, independentemente de o arquivo mail.log
ter uma entrada correspondente ao arquivo applicants.log
.