Portál AbcLinuxu, 5. května 2025 21:41
/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
/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í.
#!/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
#! /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
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 ;; esaca 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
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
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
ip -4 addr show dev ppp0 | gawk --field-separator='[ /]+' '/inet/ { print $3 }' >> $TMPFILEAle 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
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.