Anleitung "Alternative IPKG Startup Scripts" ich scheitere

Status
Für weitere Antworten geschlossen.

r00t

Benutzer
Mitglied seit
06. Feb 2012
Beiträge
32
Punkte für Reaktionen
0
Punkte
0
Hi,

ich habe der Wiki-Anleitung gefolgt und bin auch erfolgreich bis zum Punkt "Alternative IPKG Startup Scripts" vorgestoßen. Nun aber scheitere ich. Was muss ich denn womit machen? Soll ich jedes einzelne als script abspeichern. Ich bin leider noch viel zu unerfahren was linux angeht. Hoffe aber das sich das demnächst ändert.

Hier die Punkte die ich nicht verstehe. ist es überhaupt notwendig da weiter zu machen?

Alternative IPKG Startup Scripts

Wie bereits geschrieben, sind die Originalen Startup Scripts des IPKG Optware unter "/etc/opt/init.d/" nicht gerade das gelbe vom Ei. Die Scripts eignen sich gerade mal dazu die Dienste zu starten, aber für das herunterfahren der DS sind diese Scripts einfach nicht geeignet. Daher sind hier alternative Start/Stop Scripts abgelegt und jeder, der seine DS erweitert ist aufgerufen, weitere Scripts, welche ein sauberes Starten und stoppen ermöglichen, hier abzulegen. Wenn man nachfolgende Scripts verwendet, ist das alternative "optware.sh" Sript beim herunterfahren der DS dazu in der Lage die entsprechenden Dienste sauber mit stop zu beenden.
Startup Script atd

Das originale aus dem IPK stammende Startup Script unter /opt/etc/init.d/ wurde um start/stop/restart Prozeduren erweitert.

#!/bin/sh
#
# Startup script for atd
#
# Stop myself if running
PIDFILE=/var/run/atd.pid
#
start() {
/opt/sbin/atd &
echo "Optware startup atd"
}
#
stop() {
[ -f ${PIDFILE} ] && kill `cat ${PIDFILE}`
echo "Optware shutdown atd"
}
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo "Usage: $0 (start|stop|restart)"
exit 1
;;
esac
# End

Startup Script fetchmail

Das Script ist etwas angepasst, damit für jeden User ein eigenes fetchmail aufgerufen werden kann. Das Logfile hat derzeit den Nachteil, dass es für alle User beschreibbar und lesbar sein muss. Da ist noch ein kleines TODO, aber fürs erste ist das Script besser, wie das Originale, welches sich für das IPKG unter /opt/etc/init.d/ findet.

#!/bin/sh
PROG=fetchmail
#ARGS="-d 300 -t 60 -a -e 50 --auth password -f /opt/etc/fetchmailrc -L /opt/var/log/fetchmail"
ARGS="-d 910 -t 60 -a -e 50 --auth password -L /opt/var/log/fetchmail"
#
if [ -z "$1" ] ; then
case `echo "$0" | /bin/sed 's/^.*\/\(.*\)/\1/g'` in
S??*) rc="start" ;;
K??*) rc="stop" ;;
*) rc="usage" ;;
esac
else
rc="$1"
fi
#
case "$rc" in
start)
echo "starting service $PROG"
for user in `cat /etc/passwd | awk -F':' '{ print $1}'`; do
USERHOME=`cat /etc/passwd | grep "^${user}" | awk -F':' '{print $6}'`
if [ -f ${USERHOME}/.fetchmailrc ]; then
su - ${user} -c "export HOME=${USERHOME} ; $PROG $ARGS" 2>&1
fi
done
exit
#
;;
stop)
echo "stopping service $PROG"
#
if [ -n "`pidof $PROG`" ]; then
killall $PROG
fi
;;
restart)
"$0" stop
sleep 1
"$0" start
;;
*)
echo "Usage: $0 (start|stop|restart|usage)"
;;
esac
#
# End


Startup Script rsyncd

Das nachfolgende Script für /opt/etc/init.d/ sollte bei verwendung besser noch einmal sauber durchgetestet werden. Da mit DSM3.0 die Diskstation einen eingenen rsynd anbietet, ist das Script nur vollständigkeitshalber hier abgelegt.

#!/bin/sh
#
# Startup and Shutdown script for rsyncd
#
# Start
start() {
[ -e /opt/etc/default/rsync ] && . /opt/etc/default/rsync
#
if ${RSYNC_ENABLE} ; then
/opt/bin/rsync --daemon ${RSYNC_OPTS}
echo "Optware startup rsyncd."
fi
}
#
# Stop
stop() {
if [ -f /var/run/rsyncd.pid ] ; then
kill `cat /var/run/rsyncd.pid`
else
killall rsync 2>/dev/null
fi
rm -f /var/run/rsyncd.pid
}
#
stop
#
start
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo "Usage: $0 (start|stop|restart)"
exit 1
;;
esac
#
# End


Startup Script cupsd

#!/bin/sh
#
# Start / Stop Script for cupsd http://localhost:631
#
PREFIX=/opt
NAME=cupsd
DAEMON=/opt/sbin/cupsd
DAEMON_OPTS=""
#
#
start() {
echo "Starting Service: $NAME"
$DAEMON $DAEMON_OPTS
}
#
#
stop() {
killall cupsd
}
#
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: $0 (start|stop|restart)"
exit 1
;;
esac
#
# End


Startup Script openvpn mit NAT

Bitte ggf. die Adresse das VPN-Subnetzes entsprechend der /opt/etc/openvpn/openvpn.conf anpassen. Bitte vorher modprobe in Betrieb nehmen.


#!/bin/sh
#
# Startup script for openvpn server with NAT routing
# to access your local net by VPN.
#
start() {
# Get network interface of default route
DEV=$( route -n | grep "^0\.0\.0\.0" | sed 's/ */ /g' | cut -d" " -f8 )
# Get local IP address of default routing interface
IPA=$( ip addr show ${DEV} | awk '$1~/^inet$/ {gsub("/.*$","",$2);print $2}' )
# Make sure IP forwarding is enabled
echo 1 > /proc/sys/net/ipv4/ip_forward

# Make device if not present (not devfs)
if ( [ ! -c /dev/net/tun ] ) then
# Make /dev/net directory if needed
if ( [ ! -d /dev/net ] ) then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi

# Make sure the tunnel driver is loaded
if ( !(lsmod | grep -q "^tun") ); then
modprobe tun
fi
# Make sure the nat table is loaded
# (Will load ip_nat, ip_tables and ip_conntrack too.)
if ( !(lsmod | grep -q "^iptable_nat") ); then
modprobe iptable_nat
fi

## Start standalone servers (without xinetd) comment out if xinetd is used
# Start the openvpn daemon - add as many daemons as you want
/opt/sbin/openvpn --daemon --cd /opt/etc/openvpn --config openvpn.conf
# Setup NAT (adjust address if different)
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source ${IPA}
echo "Optware startup openvpn with NAT to ${IPA}"
}
#
stop() {
# Kill all servers running
if [ -n "`/opt/bin/pidof openvpn`" ]; then
/opt/bin/killall openvpn 2>/dev/null
fi
# Erase and unload nat table
if ( (lsmod | grep -q "^iptable_nat") ); then
iptables -t nat -F
modprobe -r iptable_nat;
fi
# unloaded no longe needed modules
if ( (lsmod | grep -q "^tun") ); then
#ifconfig tun0 down
modprobe -r tun;
fi

echo "Optware shutdown openvpn"
}
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo "Usage: $0 (start|stop|restart)"
exit 1
;;
esac
# End
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Hast Du irgendeines von den genannten Programmen installiert? Wenn nein, dann einfach ignorieren.
 

r00t

Benutzer
Mitglied seit
06. Feb 2012
Beiträge
32
Punkte für Reaktionen
0
Punkte
0
Denke nicht :rolleyes: ...

Hab die DS 212j seit gestern. Hab IPKG nur installiert um an pyload zu kommen. Fürs erste... Möchte mich natürlich auch in alle anderen Richtungen weiterentwickeln. Also nicht notwenig oder?
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Jep, nicht nötig.
 

r00t

Benutzer
Mitglied seit
06. Feb 2012
Beiträge
32
Punkte für Reaktionen
0
Punkte
0
Done! pyload installiert und läuft auch. Nun nur noch das letzte Problem.

Automatisches Startup/Shutdown

Um dafür zu sorgen, dass beim Startup und Shutdown der DS PyLoad automatisch gestartet und gestoppt wird, sollte IPKG in der erweiterten Variante ohne Mount Bind und mit erneuertem Startup/Shutdown Script installiert worden sein. Vor der weiteren Konfiguration für das Start / Stop Script, sollte dafür gesorgt werden, daß PaLoad nicht mehr gestartet ist.

Danach legt man nachfolgendes Script unter /opt/etc/init.d/S99pyload ab. Ausführbar machen mit chmod +x /opt/etc/init.d/S99pyload nicht vergessen! Jetzt wird getestet, ob sich PyLoad mittels /opt/etc/init.d/S99pyload start sauber starten lässt. Sobald PyLoad sauber gestart werden kann, testet man auch gleich noch mittels /opt/etc/init.d/S99pyload stop, ob PyLoad auch wieder sauber beendet wird. Nach dem Stop darf per ps | grep python kein Prozess mehr sichtbar sein.

#!/bin/sh
#
# Start / Stop Script for PyLoad http://localhost:8000
#
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="PyLoad"
DAEMON="python /opt/pyload/pyLoadCore.py --daemon"
#Fuer startup debugging:
#DAEMON="screen -dmS python /opt/pyload/pyLoadCore.py"
DAEMON_OPTS=""
INSTALL_DIR=/opt/
UPDATE_SOURCE=https://bitbucket.org/spoob/pyload/get/tip.zip
#
#
start() {
echo "Starting Service: $NAME"
$DAEMON $DAEMON_OPTS | awk '{print $3}' >/var/run/pyload.pid
}
#
stop() {
kill `cat /var/run/pyload.pid`
}
#
update() {
stop
sleep 5
cd $INSTALL_DIR
wget --no-check-certificate $UPDATE_SOURCE
unzip tip.zip
rm tip.zip
rsync -avH --update /opt/spoob-pyload-*/ /opt/pyload/
rm -rf /opt/spoob-pyload-*
start
}
#
case "$1" in
start)
start
;;
stop)
stop
;;
update)
update
;;
restart)
stop
sleep 4
start
;;
*)
echo "Usage: $0 (start|stop|restart|update)"
exit 1
;;
esac
#
# End

Was ist nun zu tun. Es wird auf das Start/Stop Script von IPKG verwiesen...
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat