Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Chipsetik 13. 12. 2018, 10:19:55

Název: Bash: počet odeslaných emailů za časové období z více emailů
Přispěvatel: Chipsetik 13. 12. 2018, 10:19:55
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
Název: Re:Bash: počet odeslaných emailů za časové období z více emailů
Přispěvatel: Danny 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
Název: Re:Bash: počet odeslaných emailů za časové období z více emailů
Přispěvatel: bash-jihad 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.
Název: Re:Bash: počet odeslaných emailů za časové období z více emailů
Přispěvatel: Chipsetik 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
Název: Re:Bash: počet odeslaných emailů za časové období z více emailů
Přispěvatel: Danny 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
Název: Re:Bash: počet odeslaných emailů za časové období z více emailů
Přispěvatel: erik80 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