(main scirpt to run is called "vdrddfxine" #! /bin/sh # # vdr start-stop script # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=vdrddfxine DESC="VDR - Linux Video Disk Recorder" export LANG="en_US.iso8859-1" export LD_ASSUME_KERNEL=2.4.1 #export LD_ASSUME_KERNEL=2.4.19 # Defaults - don't touch, edit /etc/default/vdrcbxine ENABLED=0 test -f /etc/default/vdrcbxine && . /etc/default/vdrcbxine test "$ENABLED" != "0" || exit 0 if [ ! -e "${SVDRP}" ]; then echo -e "ERROR: ${SVDRP} was not detected. Exiting. \n" exit 0 fi case "$1" in start) if ! ps -C vdr > /dev/null 2>&1; then cd /usr/local/bin ./insdvb.sh load echo -n "Starting $DESC: $NAME" # if [ -e "/usr/bin/mplayer" ]; then # /usr/bin/mplayer -vo directfb /etc/vdrb/VDRboot-NTSC.mpeg # sleep 2 # killall mplayer # sleep 3 # killall directfb # sleep 3 # fi # DVDR is /dev/cdrom and Loopdevice is /loopdevice -P'dvd -C/dev/cdrom' ./$DAEMON -v $VIDEO_DIR -E $EPG_DIR -c $CFG_DIR $OPTIONS \ $PLUGINS -P'xine -r' -P'remote -i /dev/input/event3' & # $PLUGINS -P'mp3 -C /etc/vdr -m /etc/vdr/plugins/mount.sh -i /etc/vdr/plugins/image_convert.sh -c /etc/vdr/images' \ # -P'mplayer -M /etc/vdr/plugins/mplayer.sh -m /etc/vdr/plugins/mount.sh' -P'dvd -C/dev/cdrom' & echo "." sleep 12 svdrpsend.pl -d localhost "MESG VDR Loading Sequence Completed" 2>/dev/null 1>/dev/null svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null /usr/local/bin/startdfxine.sh else echo -e "VDR is already running..\n" fi ;; stop) if ps -C vdr > /dev/null 2>&1; then cd /usr/local/bin svdrpsend.pl -d localhost "MESG VDR Shutdown Sequence Initialized" 2>/dev/null 1>/dev/null svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null echo -n "Stopping $DESC: $NAME" echo "." sleep 2 killall -q -TERM $DAEMON sleep 5 ./insdvb.sh unload killall -q df_xine # ln -fs /dev/hdc /dev/cdrom else echo -e "VDR is not running..\n" fi ;; restart|force-reload) if ps -C vdr > /dev/null 2>&1; then cd /usr/local/bin svdrpsend.pl -d localhost "MESG VDR Restart Procedure Initialized" 2>/dev/null 1>/dev/null svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null echo -n "Restarting $DESC: $NAME" echo "." sleep 2 killall -q -TERM $DAEMON sleep 5 ./insdvb.sh reload if [ -e "/usr/bin/mplayer" ]; then /usr/bin/mplayer -frames 175 -vo mpegpes /etc/vdr/discovery2005.mpg 2>/dev/null 1>/dev/null # sleep 7 # killall -q -TERM mplayer fi ./$DAEMON -v $VIDEO_DIR -E $EPG_DIR -c $CFG_DIR $OPTIONS \ $PLUGINS & # $PLUGINS -P'mp3 -C /etc/vdr -m /etc/vdr/plugins/mount.sh -i /etc/vdr/plugins/image_convert.sh -c /etc/vdr/images' \ # -P'mplayer -M /etc/vdr/plugins/mplayer.sh -m /etc/vdr/plugins/mount.sh' -P'dvd -C/dev/cdrom' & sleep 8 svdrpsend.pl -d localhost "MESG VDR Restart Procedure Completed" 2>/dev/null 1>/dev/null svdrpsend.pl -d localhost "QUIT" 2>/dev/null 1>/dev/null /usr/local/bin/startdfxine.sh else echo -e "VDR is not running..\n" fi ;; *) N=/etc/init.d/$NAME echo "Use: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 (script calls to "/etc/default/vdrcbxine" # /etc/default/vdr # Default config # 07-31-05 # Change to 1 to enable vdr's init-script ENABLED=1 # Which vdr-binary to start # (vdr-kbd, vdr-lirc, vdr-daemon or vdr-rcu) DAEMON="vdr" # svdrpsend.pl location SVDRP="/usr/local/bin/svdrpsend.pl" # Video-Directory VIDEO_DIR="/video0" # Config-Directory CFG_DIR="/etc/vdrbxine" # EPG-Directory EPG_DIR="/etc/vdrbxine" # Plugins to load for 1.3.x PLUGINS="-Pmplayercluster -Pstreamdev-server -Psc -Pyaepg -Pfemon -Pprefermenu -Psysinfo -Ptaste -Ptext2skin -Pepgsearch -Ptvonscreen -Pscreen$ # Options that will be passed to vdr's commandline # for example: OPTIONS="-w 15 --port=0" # OPTIONS="-d -l 3 -w 0" OPTIONS="--terminal=/dev/tty8 -l 3 -w 0" (script all calls to "SVDRP" #!/usr/bin/perl use Socket; use Getopt::Std; $Usage = qq{ Usage: $0 options command... Options: -d hostname destination hostname (default: localhost) -p port SVDRP port number (default: 2001) }; die $Usage if (!$ARGV[0] || !getopts("d:p:")); $Dest = $opt_d || "localhost"; $Port = $opt_p || 2001; $Cmd = "@ARGV" || Error("missing command"); $Timeout = 10; # max. seconds to wait for response $SIG{ALRM} = sub { Error("timeout"); }; alarm($Timeout); $iaddr = inet_aton($Dest) || Error("no host: $Dest"); $paddr = sockaddr_in($Port, $iaddr); $proto = getprotobyname('tcp'); socket(SOCK, PF_INET, SOCK_STREAM, $proto) || Error("socket: $!"); connect(SOCK, $paddr) || Error("connect: $!"); select(SOCK); $| = 1; Receive(); Send($Cmd); Send("quit"); close(SOCK) || Error("close: $!"); sub Send { my $cmd = shift || Error("no command to send"); print SOCK "$cmd\r\n"; Receive(); } sub Receive { while () { print STDOUT $_; last if substr($_, 3, 1) ne "-"; } } sub Error { print STDERR "@_\n"; close(SOCK); exit 0; }