Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Tetsuya 04 Června 2012, 12:13:35

Název: sendmail -t < mail - mail přijde prázdný když je v těle zprávy znak * [vyřešeno]
Přispěvatel: Tetsuya 04 Června 2012, 12:13:35
Zdravím,

Chci si udělat shellovej skript, kterej kontroluje status konkrétní služby na serveru a v případě, že služba neběží, odešle mailem varování.

Skript funguje tak, že vytvoří soubor mail (viz níže), zapíše do něj hlavičku mailu, do těla přidá výstup příkazu service (service služba status >> mail 2>&1) a soubor mail předá příkazu sendmail k odeslání (sendmail -t < mail).

Problém je v tom, že příkaz service vypíše status služby se znakem "*" na začátku textu a mail kvůli tomu přijde s prázdným tělem, bez výstupu z příkazu service. Pokud soubor mail před odeslaním upravím, a hvězdičku odeberu, tak je to ok.

Nemáte někdo tušení, jak by se to dalo vyřešit?

Předem díky za odpovědi.


Soubor mail:
Kód: [Vybrat]
To:jmeno@domena.cz
From:jmeno@domena.cz
Subject:Service ASSP Status - Warning
Content-Type: text/plain
X-Priority: 1 (Highest)
X-MSMail-Priority: High

 * ASSP (Anti-Spam SMTP Proxy) is not running
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: ntz_reloaded 04 Června 2012, 12:16:42
zkus pouzit jako klienta mailx
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: Tetsuya 04 Června 2012, 13:00:15
zkus pouzit jako klienta mailx

Myslíš jako na straně příjemce, nebo pro odeslání zprávy? Ještě jsem zapoměl dodat, že zprávy přijímám Outlookem.
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: daysleeper 04 Června 2012, 13:11:35
Používám (v Ubuntu) balík bsd-mailx, pak pro odeslání zprávy třeba takto:
Kód: [Vybrat]
service ssh status | mail -s ssh.status daysleeper@seznam.cz
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: Tetsuya 04 Června 2012, 13:25:18
Používám (v Ubuntu) balík bsd-mailx, pak pro odeslání zprávy třeba takto:
Kód: [Vybrat]
service ssh status | mail -s ssh.status daysleeper@seznam.cz

Jo, tohle je ok. Akorát příkaz mail neumožňuje nastavit prioritu, nebo jsem nepřišel nato, jak...

Taky jsem teď zjistil, že hvězdička a všechno co je za ní je vyhodnocený jako součást hlavičky, takže výstup z příkazu service zůstane v hlavičce, a mail přijde zdánlivě prázdnej.

Spíš by mě zajímalo, jestli je nějakej tag do hlavičky, kterej by říkal, že dál už následuje jen tělo zprávy, aby si tu hvězdičku nevykládal spatně.
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: ntz_reloaded 04 Června 2012, 13:42:50
escapovat hvezdicku
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: Tetsuya 04 Června 2012, 14:18:52
Ok, tak už jsem na to přišel.

Na ukončení hlavičky mailu se používá prazdnej řádek, kterej mi tam ten skript samozřejmě nedělal... Taky mě to mohlo napadnout...

Každopádně, díky za odpovědi - nakoplo mě to správným směrem. :)
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: daysleeper 04 Června 2012, 14:40:29
...
Jo, tohle je ok. Akorát příkaz mail neumožňuje nastavit prioritu, nebo jsem nepřišel nato, jak...
...
Umožňuje, pomocí mail -a <hlavicka>.
Název: Re:sendmail -t < mail - mail přijde prázdný, pokud je v těle zprávy znak "*"
Přispěvatel: Tetsuya 04 Června 2012, 14:41:46
...
Jo, tohle je ok. Akorát příkaz mail neumožňuje nastavit prioritu, nebo jsem nepřišel nato, jak...
...
Umožňuje, pomocí mail -a <hlavicka>.

Aha... Tak toho jsem si vůbec nevšimnul. Díky. :)