Yazarın ne yapmaya çalıştığını anlamak için aşağıdaki bash betiğini parçalamaya yardım etmem gerekiyor. Komut dosyası bir günlük dosyasını veri aramak ve ardından bir e-posta günlük dosyasıyla karşılaştırmak içindir. Her iki dosya arasındaki farklılıklar daha sonra 'kişilere' e-postayla gönderilir. Senaryo son zamanlarda yanlış pozitifler döndürüyor.
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"`" 'person1@email.com, person2@email.com, person3@email.com'
Şimdiye kadar ne söyleyebilirim?
cat
dosyaapplication.log
- boru
cat
sonuçları vegrep
Tarih / Saat biçimindeY:M:D
- Yukarıdaki yaparken
grep
formatta Tarih / SaatD:M:Y
danmail.log
dosyası. - Bu benim karıştırdığım yer, sanki
grep
tekrar -s,echo
-es değişkende sonuçlarawk
veriyor ve sonra verileri belirli bir şekilde biçimlendirmek için kullanıyor . - Daha sonra biçimlendirilmiş sonuçları alır ve
echo
değişkende depolanan verileri alır ve bildirilmesi gereken kişilere e-posta gönderir.
SORULAR:
- Bu senaryoyu yazmanın daha etkili bir yolu var mı? Boru çok fazla kullanılıyor gibi görünüyor.
- Senaryo yanlış pozitif veriyorsa, sorunun en olası nedeni nerededir?
Applicants.log dosyasının bir parçası:
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
İşte mail.log dosyasının bir parçası:
[26/Nov/2017 06:03:44] Recv: Queue-ID: 5a1aada0-000006fa, Service: SMTP, From: <_www@server.thecompany.com>, To: <person1@thecompany.com>, Size: 9571, Sender-Host: mail-sn1nam01lp0119.outbound.protection.outlook.com, SSL: yes, Subject: CIF: 100899-Video Production Specialist: Danny Couch, Msg-Id: <20171126120341.866E12750554@server.thecompany.com>
[26/Nov/2017 06:03:46] Sent: Queue-ID: 5a1aada0-000006fa, Recipient: <person1@thecompany.com>, 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: <_www@server.thecompany.com>, To: <person1@thecompany.com>, Size: 9886, Sender-Host: mail-by2nam01lp0181.outbound.protection.outlook.com, SSL: yes, Subject: CIF: 100899-Video Production Specialist: Don Brown, Msg-Id: <20171126151424.6379027519D6@server.thecompany.com>
[26/Nov/2017 09:14:28] Sent: Queue-ID: 5a1ada53-00000713, Recipient: <person1@thecompany.com>, Result: delivered, Status: 2.0.0 , Remote-Host: 127.0.0.1, Msg-Id: <20171126151424.6379027519D6@server.thecompany.com>
[26/Nov/2017 09:32:40] Recv: Queue-ID: 5a1ade98-00000719, Service: SMTP, From: <_www@server.thecompany.com>, To: <person2@thecopmany.com>, Size: 8807, Sender-Host: mail-bn3nam01lp0176.outbound.protection.outlook.com, SSL: yes, Subject: CIF: 100916-Creative Services Team Manager: David Stanford, Msg-Id: <20171126153239.26CF22751A2F@server.thecompany.com>
[26/Nov/2017 09:32:42] Sent: Queue-ID: 5a1ade98-00000719, Recipient: <person2@thecompany.com>, Result: delivered, Status: 2.0.0 , Remote-Host: 127.0.0.1, Msg-Id: <20171126153239.26CF22751A2F@server.thecompany.com>
İşte betiğin sonundaki posta bölümündeki insanlara gönderilen sonuç e-postası:
Subject: Applicants Without Recruiter Notification For 26/Nov/2017
Message-ID: <20171127055500.7BAF0275617B@thecompany.com>
Date: Sun, 26 Nov 2017 23:55:00 -0600
From: System Administrator <admin@server.thecompany.com>
Return-Path: admin@server.thecompany.com
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
Dolayısıyla ortaya çıkan bildirim (Bildirimleri Olmayan Uygulamalar) yalnızca applicants.log
dosyada dosyada karşılık gelen bir girişi olmayan bir giriş olduğunda gerçekleşmelidir mail.log
. Bu nedenle mail.log
, David Stanford için dosyaya bir giriş yapılmazsa , bildirim SADECE posta sunucusunun David Stanford için bir e-posta almadığını yansıtır. Bunu Danny Couch veya Don Brown için yapmaz çünkü isimlerini mail.log
dosyada bulur . Bunun yerine, komut dosyası, mail.log
dosyanın dosyaya karşılık gelen bir girişi olup olmadığına bakılmaksızın tüm uygulamalar için bildirim oluşturur applicants.log
.
applicants.log
Girilen mail.log
bir metinle birlikte mailx
(aynı sonucu elde edip etmediğimizi doğrulamak için ) ve (bir pasajı ) ve ( pasajını) sağladıysanız çok yardımcı olacaktır . Onları yanlış bir pozitif oluşturmaya çalışın ve son metinde tam olarak nerede olduğunu söyleyin. Kullandığınız günlüklerin biçimini bilmediğimizi varsayalım, bu nedenle awk
onlara ve diğer araçların onlara ne yaptığını analiz etmek zor ; Bize biraz snippet vermediysen, bu. Edit bu bilgileri eklemek için sorunuzu.
date "+%b"
İngilizce olmayan kısaltılmış ismi döndürdüğüm için makbuzlarınızdan yanlış pozitifler aldım . Dil ayarlarınız neler? Lütfen çıktısını ekleyin printenv | egrep "^LANG|^LC_"
.