Portál AbcLinuxu, 5. května 2025 21:41

Dotaz: odeslani emailu po startu serveru

13.12.2007 21:03 KVC
odeslani emailu po startu serveru
Přečteno: 903×
Odpovědět | Admin
Jak nastavim automaticke odeslani informacniho emailu po startu systemu na urcity email? Debian (Etch) + ssmtp a zakladni sendmail. Za pripadne rady dekuji predem.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.12.2007 21:21 hates | skóre: 30 | blog: Jak_jsem_se_dostal_k_linuxu
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
co takhle hned po startu spustit nejaky skript, ktery ten mail odesle napriklad pomoci prikazu mail
13.12.2007 21:34 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
diky za odpoved.. nejsem jeste v Linuxu tak zbehly, muzete mi to trosku napsat podrobneji co a jak? Jeste jednou diky..
13.12.2007 21:51 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Většina distribucí má nějaký skript, který se spouští na konci inicializačních skriptů, a který je určen pro uživatelské příkazy. Může se jmenovat třeba /etc/init.d/local, ale uživatelské příkazy mohou být zapsány ještě v jiném skriptu – např. na Gentoo tento skript spouští /etc/conf.d/local.start. Do toho skriptu pak přidejte něco takového:
sendmail user@example.com <<END
From: "Strazce serveru"
Subject: Server se spustil

Server ABCD se spustil a bezi.
END
14.12.2007 11:48 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Diky.. mam Debian a nevim, do ktereho souboru mam toto vepsat. V etc/init.d/local nemam.. Nevite, jak je to u Debianu?
14.12.2007 11:50 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Uz jsem to nasel. Cituji Vas z jineho prispevku: "Debian má pro stejný účel /etc/init.d/rc.local" . Tak snad to tam nejak napasuji.. dam vedet, jak to dopadlo. Diky mockrat!
14.12.2007 12:08 jcl
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
To by mě taky zajímalo, ale nějak nemůžu přijít na to kam se to v tom souboru /etc/init.d/rc.local má vložit?
14.12.2007 13:55 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Jestli /etc/init.d/rc.local má takovouhle část takhle:
do_start() {
  if [ -x /etc/rc.local ]; then
    log_begin_msg "Running local boot scripts (/etc/rc.local)"
    /etc/rc.local
    log_end_msg $?
  fi
}
pak svůj skript vložte do souboru /etc/rc.local. Pokud ten soubor neexistuje, tak jej založte a nastavte mu právo ke spouštění.
15.12.2007 16:25 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Tohodle (rozdil mezi /etc/init.d/rc.local a /etc/rc.local) jsem si nevsiml, omlouvam se a diky;)
14.12.2007 15:45 zelial | skóre: 21
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
zdravím,

můj výchozí rc.local vypadá tak, že v něm v podstatě nic není.

kód pro posílání mailu prostě vložte na konec. pokud rc.local obsahoval příkaz "exit 0", tak jej smažte. ve výsledku by to mohlo vypadat třeba takhle:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#odeslat email pri staru serveru
/usr/sbin/sendmail user@example.com <<END
From: "Strazce serveru"
Subject: Server se spustil


Server ABCD se spustil a bezi. 
END 


14.12.2007 15:48 zelial | skóre: 21
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
a otestovat, že to opravdu posílá emaily můžete prostým spuštěním toho /etc/init.d/rc.local z konzole. není třeba restartovat.
14.12.2007 20:43 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Udelal jsem novy prazdny skript, v tom puvodnim je toho docela dost. Tak jako uzkouska to funguje. Jsem pripojenej pres putty, tak nevim, jak ses mam hodit obsah toho puvodniho skriptu.. Diky za rady..
14.12.2007 22:31 zelial | skóre: 21
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
puttýnka automaticky kopíruje do schránky označený text, takže tak by se to dalo. nebo přes winscp přenést na klientskou stanici a pak vložit.

ale se slušnou pravděpodobností to půjde udělat tak, že prostě na konec toho rc.local vložíte /uplnou/cestu/k/tomu/novemu/scriptu. samozřejmě musí být spustitelný.
15.12.2007 12:05 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak se mi to povedlo nejakym zpusobem zkopirovat;) toto je tedy ten muj puvodni skript..

PS: a je jeste nejaka moznost odeslat email pri vypinani serveru.

Mockrat dekuji...

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $local_fs $remote_fs
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO


PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
        if [ -x /etc/rc.local ]; then
                [ "$VERBOSE" != no ] && log_begin_msg "Running local boot script
                /etc/rc.local
                ES=$?
                [ "$VERBOSE" != no ] && log_end_msg $ES
                return $ES
        fi
}

case "$1" in
    start)
        do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac
15.12.2007 13:24 zelial | skóre: 21
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
ježíš, ja jsem trubka, sorry. zaměnil jsem /etc/init.d/rc.local s /etc/rc.local.

/etc/init.d/rc.local upravovat nemíte - on má jen za úkol spustit při startu ten /etc/rc.local.

takže ten kousek kódu, který vám Filip Jirsák nasal, vložte do toho /etc/rc.local a bude vystarané (bacha na případný "exit 0" v něm - smazat)
15.12.2007 16:21 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Tak ted uz to chapu:) vyzkousim a dam vedet. Diky moc!
15.12.2007 14:04 zelial | skóre: 21
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
ad odesílání při vypínání: žádnou obdobu pro /etc/rc.local, která by se volala při vypnutí jsem nenašel. v případě, že fakt nejsem slepý, a ona opravdu neexistuje, si ji můžem vyrobit třeba takhle:
cp /etc/rc.local /etc/rc.local.shutdown
/etc/init.d/rc.local doplníme o stop sekci, která bude volat ten nový /etc/rc.local.shutdown:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $local_fs $remote_fs
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Run /etc/rc.local on startup, /etc/rc.local.shutdown on shutdown/reboot
### END INIT INFO


PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
        if [ -x /etc/rc.local ]; then
                [ "$VERBOSE" != no ] && log_begin_msg "Running local boot script
                /etc/rc.local
                ES=$?
                [ "$VERBOSE" != no ] && log_end_msg $ES
                return $ES
        fi
}
do_stop() {
        if [ -x /etc/rc.local.shutdown ]; then
                [ "$VERBOSE" != no ] && log_begin_msg "Running local shutdown scripts (/etc/rc.local.shutdown)"
                /etc/rc.local.shutdown
                ES=$?
                [ "$VERBOSE" != no ] && log_end_msg $ES
                return $ES
        fi
}

case "$1" in
    start)
        do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        do_stop
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac
a nakonec zaktualizujeme symlinky, aby se "/etc/init.d/rc.local stop" volalo kdy má:
update-rc.d -f rc.local remove
update-rc.d  rc.local start 99 2 3 4 5 . stop 01 0 1 6 .
otestujem, že to dělá, co má:
/etc/init.d/rc.local start
/etc/init.d/rc.local stop
17.12.2007 18:34 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Genialni, funguje to!!! diky moc.

PS: ted budu studovat, proc to tak je:)
17.12.2007 18:38 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Ještě bych se chtěl zeptat, zda se da do toho mailu vlozit aktualni verejna IP adresa serveru? Diky
17.12.2007 19:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Třeba takhle nějak:
TMPFILE=`mktemp -t server-start-email.XXXXXXXXXX` || exit 1
echo 'From: "Strazce serveru"' >> $TMPFILE
echo 'Subject: Server se spustil' >> $TMPFILE
echo '' >> $TMPFILE
echo 'Server ABCD se spustil a bezi.' >> $TMPFILE
echo 'Ma nasledujici IP adresy:' >> $TMPFILE
echo `ip -4 addr show dev eth0 | gawk --field-separator='[ /]+' '/inet/ { print $3 }'` >> $TMPFILE

/usr/sbin/sendmail user@example.com < $TMPFILE

rm $TMPFILE
17.12.2007 20:01 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Diky. Tak jsem to zkousel. Verejnou IP mam na ppp0, tak jsem to zmenil z eth0, ale bohuzel mail dorazi, ale bez IP:(
17.12.2007 20:05 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
A samotný příkaz
ip -4 addr show dev ppp0 | gawk --field-separator='[ /]+' '/inet/ { print $3 }'
tu IP adresu vypíše? Možná bude potřeba změnit print $3 na jiný sloupeček, nevím, jak je formátovaný výstup příkazu ip pro zařízení ppp
17.12.2007 20:13 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Ano, prikaz adresu vypise...
17.12.2007 20:16 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
Jak teď na to znova koukám, kopírovla jsem zbytečně moc, ten příkaz echo je tam zbytečný, ten řádek klidně může vypadat takhle:
ip -4 addr show dev ppp0 | gawk --field-separator='[ /]+' '/inet/ { print $3 }' >> $TMPFILE
Ale fungovat by měla jak první tak druhá varianta. Spouštíte ten skript pod rootem? Běžný uživatel nemá právo na spuštění ip.
17.12.2007 20:17 KVC
Rozbalit Rozbalit vše Re: odeslani emailu po startu serveru
OMLOUVAM SE, mel jsem tam drobny preklep. DIKY, uz to funguje!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.