Bash: počet odeslaných emailů za časové období z více emailů

Chipsetik

Dobrý den,

nevím si moc rady s tímto úkolem. Potřebuju spočítat pro více emailů počet odeslaných a přijatých zpráv za časové období 3 měsíců tedy září,říjen,listopad.

Moc se mi s tím nedaří poprat tak mě napadlo jestli mě zde nepomůžete nasměrovat.

Kód: [Vybrat]
cat /var/log/mail.* | zcat  /var/log/mail.* | grep "mail@example.com" |  sed -n '/2018-09-01/,/2016-09-31/p' /var/log/mail.* | awk '{print $2}' | uniq -c
řekl sem si že nejdříve vypočítám pro jednotlivé emaily Doručené a poté Odeslané zprávy, ovšem očividně dělám něco špatně.

Kód: [Vybrat]
gzip: /var/log/mail.err: not in gzip format

gzip: /var/log/mail.err.1: not in gzip format

gzip: /var/log/mail.info: not in gzip format

gzip: /var/log/mail.info.1: not in gzip format
« Poslední změna: 13. 12. 2018, 10:24:33 od Petr Krčmář »


Danny

Re:Bash: počet odeslaných emailů za časové období z více emailů
« Odpověď #1 kdy: 13. 12. 2018, 10:43:18 »
proč je tam ten zcat? imho tam vadí, snaží se dekomprimovat soubory, které nejsou zkomprimované a taky zaclání v té koloně a odřízne výstup z toho catu

bash-jihad

Re:Bash: počet odeslaných emailů za časové období z více emailů
« Odpověď #2 kdy: 13. 12. 2018, 10:57:50 »
"Bash" znamena ze to musi bejt oneliner? Nejdriv si budes muset zjistit, ktery soubor je gzipovany a ktery ne. Potom s nima muzes podle toho pracovat.

Chipsetik

Re:Bash: počet odeslaných emailů za časové období z více emailů
« Odpověď #3 kdy: 13. 12. 2018, 10:58:25 »
proč je tam ten zcat? imho tam vadí, snaží se dekomprimovat soubory, které nejsou zkomprimované a taky zaclání v té koloně a odřízne výstup z toho catu
Zapoměl jsem zmínit, že starší logy jsou v tomto formátu
Kód: [Vybrat]
mail.log.10.gz

Danny

Re:Bash: počet odeslaných emailů za časové období z více emailů
« Odpověď #4 kdy: 13. 12. 2018, 12:06:09 »
proč je tam ten zcat? imho tam vadí, snaží se dekomprimovat soubory, které nejsou zkomprimované a taky zaclání v té koloně a odřízne výstup z toho catu
Zapoměl jsem zmínit, že starší logy jsou v tomto formátu
Kód: [Vybrat]
mail.log.10.gz
ale nemůžeš cat a zcat dát takhle za sebou do kolony, to se tluče: tak jak to máš napsané nejdřív cat catne všechny soubory, to se předá zcatu, ten to zahodí a snaží se zcatnout všechny soubory - musíš skript strukturovat tak, aby se catly jenom nekomprimované a zcatly jenom komprimované soubory a obojí šlo na stejný standardní výstup, takhle je kolona napsaná špatně a nemůže to fungovat


erik80

Re:Bash: počet odeslaných emailů za časové období z více emailů
« Odpověď #5 kdy: 13. 12. 2018, 14:59:37 »
rozdel si to na drobne
zacni tym ze spocitas odchadazjuce emaily v nezipovanych logoch:
1. catni logy
2. vyfiltruj riadky ktore ta zaujimaju (obsahuju postfix a adresu from=<nieco@example.com> )
3. z riadku vyber len tie informacie, ktore ta zaujimaju (datum a emailova adresa)
4. sort | uniq -c

analogicky postupuj pre ostatne pripady