Acties:
  • 0 Henk 'm!

  • Extreme smell
  • Registratie: April 2006
  • Laatst online: 13:20
Beste tweakers,

Ik heb het voor elkaar gekregen om SABnzbd op een Western Digital My Book Live te laten draaien.
de My Book Live draait op een Debian Lenny distributie, en is benaderbaar via SSH.

Ik kan SABnzbd laten draaien met dit commando:

code:
1
MyBookLive:~# python /opt/SABnzbd-0.6.1/SABnzbd.py 0.0.0.0:8085


Nu blijft SABnzbd dus alleen draaien als de terminal open blijft.
Ik wil dus dat SABnzbd start bij het opstarten van de schijf, en ik wil SABnzbd ook kunnen starten en stoppen via SSH. Ik dacht er zelf aan om hem als een daemon te draaien.
Ik heb hiervoor deze link gevonden: http://wiki.sabnzbd.org/install-as-a-unix-daemon

Nu vraag ik mij af of dit zo gaat werken?
En ik heb zelf amper ervaring met linux, dus ik weet niet precies hoe ik dat script moet installeren.
Ik dacht zelf door het script in textwrangler te zetten, opslaan als sabnzbd.ini en dan in de goeie map zetten.
Iemand hulp of advies?

Thanks ;)

Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Het is geen inifile, maar een script.

In Debian zet je deze in /etc/init.d, maak hem executable,
code:
1
chmod a+x /etc/init.d/jouw_script_naam
en dan maak je in /etc/rc2.d een symlink naar dit scrip, met een naam die begint met S99.
code:
1
ln -s /etc/init.d/jouw_script_naam /etc/rc2.d/S99jouw_script_naam



Bij het opstarten worden alle /etc/rc2.d/S* scripts aangeroepen met 'start' als argument (in numerieke volgorde, vandaar de 99)

Je kunt de zaak met de hand starten en stoppen:
code:
1
2
/etc/init.d/jouw_script_naam start
/etc/init.d/jouw_script_naam stop


Ik heb geen idee wat textwrangler is, maar je moet zorgen dat het script unix lineendings heeft.

Acties:
  • 0 Henk 'm!

  • Extreme smell
  • Registratie: April 2006
  • Laatst online: 13:20
Ok ik begrijp het bijna, alleen snap ik dat scripten nog niet helemaal.
Ik moet hem dus niet opslaan als inifile maar als script. Wat voor extensie heeft dat dan?

Met textwrangler kan ik btw exporteren met Unix linebreaks.

Acties:
  • 0 Henk 'm!

  • DutchNutcase
  • Registratie: Augustus 2005
  • Niet online

DutchNutcase

E = mc^2

Extreme smell schreef op donderdag 26 mei 2011 @ 13:50:
Ok ik begrijp het bijna, alleen snap ik dat scripten nog niet helemaal.
Ik moet hem dus niet opslaan als inifile maar als script. Wat voor extensie heeft dat dan?

Met textwrangler kan ik btw exporteren met Unix linebreaks.
In *NIX zijn extensies er vooral voor de vorm en de gebruiker. :X Dus maak er iets leuks van. Of natuurlijk geen extensie, wat vrij standaard is in /etc/init.d/

Luctor et Emergo || specs


Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:28
In plaats van zelf die symlinks aan te maken, kun je beter

update-rc.d jouw_script_naam defaults
draaien. Dan worden alle benodige symlinks aangemaakt en wordt de daemon ook netjes gestopt als het apparaat wordt afgesloten. :)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • Extreme smell
  • Registratie: April 2006
  • Laatst online: 13:20
Jaap-Jan schreef op donderdag 26 mei 2011 @ 14:57:
[...]
In plaats van zelf die symlinks aan te maken, kun je beter

update-rc.d jouw_script_naam defaults
draaien. Dan worden alle benodige symlinks aangemaakt en wordt de daemon ook netjes gestopt als het apparaat wordt afgesloten. :)
Ik heb dit script in /etc/init.d geplaatst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh

case "$1" in
start)
  echo "Starting SABnzbd."
  /usr/bin/sudo -u benjamin11 -H /opt/SABnzbd-0.6.2/SABnzbd.py -d -f /home/benjamin11/.sabnzbd/sabnzbd.ini
;;
stop)
  echo "Shutting down SABnzbd."
  /usr/bin/wget -q --delete-after "http://0.0.0.0:8085/sabnzbd/api?mode=shutdown&apikey=1ad1bc3fa97f731c993cd80c00e9d5d3"
;;
*)
  echo "Usage: $0 {start|stop}"
  exit 1
esac

exit 0

Als ik dit commando gebruik dan krijg ik het volgende terug:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
MyBookLive:/etc/init.d# cd
MyBookLive:~# chmod a+x  /etc/init.d/sabnzbd
MyBookLive:~# update-rc.d sabnzbd defaults
update-rc.d: warning: /etc/init.d/sabnzbd missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/sabnzbd ...
   /etc/rc0.d/K20sabnzbd -> ../init.d/sabnzbd
   /etc/rc1.d/K20sabnzbd -> ../init.d/sabnzbd
   /etc/rc6.d/K20sabnzbd -> ../init.d/sabnzbd
   /etc/rc2.d/S20sabnzbd -> ../init.d/sabnzbd
   /etc/rc3.d/S20sabnzbd -> ../init.d/sabnzbd
   /etc/rc4.d/S20sabnzbd -> ../init.d/sabnzbd
   /etc/rc5.d/S20sabnzbd -> ../init.d/sabnzbd


Ik heb gelijk maar ff gekeken of ik hem kon starten (ik wist natuurlijk dat het niet ging werken omdat er iets mist :+ )

Ik kreeg terug dat MyBookLive geen bekende user is

Vervolgens heb ik MyBookLive in het script vervangen voor mijn eigen username. Dan krijg ik het volgende terug:

code:
1
2
MyBookLive:~# /etc/init.d/sabnzbd start
-bash: /etc/init.d/sabnzbd: Permission denied



wat klopt er nou niet?

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:28
Ik heb hier het script van SABnzbdplus zoals het op Debian Squeeze is.

Veel langer, maar misschien werkt het.
#!/bin/sh
#
# Copyright (C) 2008-2010 by JCF Ploemen <linux@jp.pp.ru>
# released under GPL, version 2 or later

################################################
#                                              #
#  TO CONFIGURE EDIT /etc/default/sabnzbdplus  #
#                                              #
################################################

### BEGIN INIT INFO
# Provides:          sabnzbdplus
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:      NetworkManager
# Should-Stop:       NetworkManager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SABnzbd+ binary newsgrabber
### END INIT INFO

DAEMON=/usr/bin/sabnzbdplus
SETTINGS=/etc/default/sabnzbdplus

([ -x $DAEMON ] && [ -r $SETTINGS ]) || exit 0

DESC="SABnzbd+ binary newsgrabber"
DEFOPTS="--daemon"
PYTHONEXEC="^$(sed -n '1s/^#\!\([a-z0-9\.\/]\+\)\(.*\)/\1(\2)?/p' $DAEMON)"
PIDFILE=/var/run/sabnzbdplus.pid
SETTINGS_LOADED=FALSE

# these are only accepted from the settings file
unset USER CONFIG HOST PORT EXTRAOPTS

. /lib/lsb/init-functions

check_retval() {
	if [ $? -eq 0 ]; then
		log_end_msg 0
		return 0
	else
		log_end_msg 1
		exit 1
	fi
}

is_running() {
	# returns 0 when running, 1 otherwise
	PID="$(pgrep -f -x -u $USER "$PYTHONEXEC $DAEMON $DEFOPTS.*")"
	RET=$?
	[ $RET -gt 1 ] && exit 1 || return $RET
}

load_settings() {
	if [ $SETTINGS_LOADED != "TRUE" ]; then
		. $SETTINGS

		[ -z "$USER" ] && {
			log_warning_msg "$DESC: not configured, aborting. See $SETTINGS";
			return 1; }

		OPTIONS="$DEFOPTS"
		[ -n "$CONFIG" ] && OPTIONS="$OPTIONS --config-file $CONFIG"
		[ -n "$HOST" ] && SERVER="$HOST" || SERVER=
		[ -n "$PORT" ] && SERVER="$SERVER:$PORT"
		[ -n "$SERVER" ] && OPTIONS="$OPTIONS --server $SERVER"
		[ -n "$EXTRAOPTS" ] && OPTIONS="$OPTIONS $EXTRAOPTS"
		SETTINGS_LOADED=TRUE
	fi
	return 0
}

start_sab() {
	load_settings || exit 0
	if ! is_running; then
		log_daemon_msg "Starting $DESC"
		start-stop-daemon --quiet --chuid $USER --start --exec $DAEMON -- $OPTIONS
		check_retval
		# create a pidfile; we don't use it but some monitoring app likes to have one
		[ -w $(dirname $PIDFILE) ] && \
			pgrep -f -x -n -u $USER "$PYTHONEXEC $DAEMON $OPTIONS" > $PIDFILE
	else
		log_success_msg "$DESC: already running (pid $PID)"
	fi
}

stop_sab() {
	load_settings || exit 0
	if is_running; then
		TMPFILE=$(mktemp /tmp/sabnzbdplus.XXXXXXXXXX || exit 1)
		trap '[ -f $TMPFILE ] && rm -f $TMPFILE' EXIT
		echo "$PID" > $TMPFILE
		log_daemon_msg "Stopping $DESC"
		start-stop-daemon --stop --user $USER --pidfile $TMPFILE --retry 30
		check_retval
	else
		log_success_msg "$DESC: not running"
	fi
	[ -f $PIDFILE ] && rm -f $PIDFILE
}

case "$1" in
	start)
		start_sab
	;;
	stop)
		stop_sab
	;;
	force-reload|restart)
		stop_sab
		start_sab
	;;
	status)
		load_settings || exit 4
		if is_running; then
			log_success_msg "$DESC: running (pid $PID)"
		else
			log_success_msg "$DESC: not running"
			[ -f $PIDFILE ] && exit 1 || exit 3
		fi
	;;
	*)
		log_failure_msg "Usage: $0 {start|stop|restart|force-reload|status}"
		exit 3
	;;
esac

exit 0


En maak dit aan in /etc/default/sabnzbdplus (aanpassen waar nodig):
# This file is sourced by /etc/init.d/sabnzbdplus
#
# When SABnzbd+ is started using the init script, the
# --daemon option is always used, and the program is
# started under the account of $USER, as set below.
#
# Each setting is marked either "required" or "optional";
# leaving any required setting unconfigured will cause
# the service to not start.

# [required] user or uid of account to run the program as:
USER=

# [optional] full path to the configuration file of your choice;
#            otherwise, the default location (in $USER's home
#            directory) is used:
CONFIG=

# [optional] hostname/ip and port number to listen on:
HOST=
PORT=

# [optional] extra command line options, if any:
EXTRAOPTS=


En als het goed is krijg je dan niet die warnings over de missende LSB- informatie in update-rc.d.

Doe eerst even een
update-rc.d <naam script> remove
en dan opnieuw met update-rc.d de symlinks aanmaken.

[ Voor 10% gewijzigd door Jaap-Jan op 26-05-2011 16:13 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1