diff options
| author | root <root@elwms02.(none)> | 2010-04-06 16:13:08 +0200 |
|---|---|---|
| committer | root <root@elwms02.(none)> | 2010-04-06 16:13:08 +0200 |
| commit | 0e7005fcc7483c01aa102fbea358c5ac65a48d62 (patch) | |
| tree | 11517ce0d3d2977c6732b3aa583b0008083e0bd3 /extra/vdrcommander | |
| download | x-vdr-0e7005fcc7483c01aa102fbea358c5ac65a48d62.tar.gz x-vdr-0e7005fcc7483c01aa102fbea358c5ac65a48d62.tar.bz2 | |
hello world
Diffstat (limited to 'extra/vdrcommander')
| -rw-r--r-- | extra/vdrcommander | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/extra/vdrcommander b/extra/vdrcommander new file mode 100644 index 0000000..ba5471d --- /dev/null +++ b/extra/vdrcommander @@ -0,0 +1,211 @@ +#!/bin/bash + +# vdr-commander 0.0.1 (start-script for VDR) +# by Marc Wernecke - www.zulu-entertainment.de +# 30.05.2007 +VERSION="vdrcommander 0.0.1" + +### Config #################################################################################### +SERVERIP="" +MAC="" +NONROOT="true" + +### Arguments ################################################################################# +[ -r $HOME/vdrcommander.conf ] && . $HOME/vdrcommander.conf +KILLVDR="false" +RUNVDR="false" + +for i in $* ; do + case $1 in + --help|-h) + echo "$VERSION" + echo "--help|-h Shows the help text and exit" + echo "--nonroot|-n Sets NONROOT flag" + echo "--reset|-r Remove the configuration file (\$HOME/vdrcommander.conf)" + echo "--ip|-i [ip] 127.0.0.1 for localhost or any other ip for a vdr-server in your local-network" + echo "--mac|-m 00:00:00:00:00:00" + echo "--version|-v Shows the script version and exit" + exit 0 + ;; + --nonroot|-n) + NONROOT="true" + ;; + --reset|-R) + if [ -f $HOME/vdrcommander.conf ]; then + rm -f $HOME/vdrcommander.conf + SERVERIP= + MAC= + fi + ;; + --killvdr|-k) + KILLVDR="true" + ;; + --runvdr|-r) + RUNVDR="true" + ;; + --ip|-i) + shift 1 + SERVERIP="$1" + ;; + --mac|-m) + shift 1 + MAC="$1" + ;; + --version|-v) + echo "$VERSION" + exit 0 + ;; + esac + shift 1 +done + +if [ -n "`ps x --user root | grep "/usr/.*bin/X.*:0" | grep -v grep`" ]; then # X is running + DIALOG="Xdialog" + d_args="--left --wrap" + d_size="0 0" +else + DIALOG="dialog" + d_args="" + d_size="19 70" +fi + + +### Functions ################################################################################# +function _exit() { + case $1 in + 0) exit 0 + ;; + 1) exit 1 + ;; + 2) exit 2 + ;; + esac + exit 0 +} + +function _suonly() { + [ "$NONROOT" = "true" ] && return 0 + # superuser only + SU=$(which kanotix-su) + [ -n "$SU" ] || SU=$(which su-me) + if [ "`id -u`" != "0" ] && [ -n "$SU" ]; then + exec $SU $0 $ARGS || _exit 1 + _exit 0 + else + return 2 +# _exit 2 + fi + return 0 +} + +function _vdr() { + # Check if VDR is running + [ `ps -C vdr | grep -cw "vdr"` -eq 0 ] && return 1 + return 0 +} + +function _serverip() { + SERVERIP=`$DIALOG $d_args --title " $VERSION " --inputbox "VDR-Server IP" 10 50 "$SERVERIP" 3>&1 1>&2 2>&3` + [ $? != 0 ] && return 1 + [ "$SERVERIP" = "" ] && return 1 + echo "SERVERIP=$SERVERIP" >> $HOME/vdrcommander.conf + return 0 +} + +function _mac() { + MAC=`$DIALOG $d_args --title " $VERSION " --inputbox "VDR-Server MAC" 10 50 "$MAC" 3>&1 1>&2 2>&3` + [ $? != 0 ] && return 1 + [ "$MAC" = "" ] && return 1 + echo "MAC=$MAC" >> $HOME/vdrcommander.conf + return 0 +} + +function _ping() { + [ -n "$SERVERIP" ] || return 2 +# $DIALOG $d_args --title " $VERSION " --infobox "Sende ping zu VDR-Server ($SERVERIP)" $d_size & + ping -c1 $SERVERIP > /dev/null || return 1 + return 0 +} + +function _wakeonlan() { + [ -n "$SERVERIP" ] || _serverip + [ -n "$MAC" ] || _mac + _ping && return 0 + $DIALOG $d_args --title " $VERSION " --infobox "Wecke VDR-Server ($MAC)" $d_size & + wakeonlan $MAC || return 1 + STATUS="VDR-Server wurde gestartet" + return 0 +} + +function _runvdr() { + ARGS="--runvdr" + _suonly + _vdr || runvdr > /dev/null & + STATUS="VDR wurde gestartet" +} + +function _killvdr() { + ARGS="--killvdr" + _suonly + _vdr || return 0 + vdrplayer --exit + killall -9 runvdr + killall -9 vdr + STATUS="VDR wurde beendet" +} + +function _status() { + USER=`id -un` + if [ -z "$STATUS" ]; then + STATUS="VDR ist aktiv" + _vdr || STATUS="VDR ist nicht aktiv" + fi + _ping && STATUS="$STATUS \nServer ist online ($SERVERIP)" +} + +function _vdrversion() { + if [ "$DIALOG" = "Xdialog" ]; then + vdr --version > /tmp/vdrversion.txt + $DIALOG $d_args --title " $VERSION " --no-cancel --textbox "/tmp/vdrversion.txt" $d_size + else + VDRVERSION=$(vdr --version) + $DIALOG $d_args --title " $VERSION " --msgbox "$VDRVERSION" $d_size + fi +} + + +### Main Script ############################################################################### +# superuser only +_suonly +NONROOT="false" +[ "$KILLVDR" = "true" ] && _killvdr +[ "$RUNVDR" = "true" ] && _runvdr +[ -n "$SERVERIP" ] && $DIALOG $d_args --title " $VERSION " --infobox "Sende ping zu VDR-Server ($SERVERIP)" $d_size & + +# Dialog +while true; do + _status + option=`$DIALOG $d_args --title " $VERSION" --menu \ + "Benutzer ist \"$USER\" \n$STATUS" $d_size 10 \ + '0' 'Anzeige aktualisieren' \ + '1' 'VDR starten' \ + '2' 'VDR beenden' \ + '3' 'VDR Player aufrufen' \ + '4' 'Server aufwecken' \ + '5' 'x-vdr aufrufen' \ + '6' 'VDR-Version anzeigen' 3>&1 1>&2 2>&3` + [ $? != 0 ] && _exit 1 + ARGS="" + STATUS="" + + case $option in + 1) _runvdr ;; + 2) _killvdr ;; + 3) vdrplayer & ;; + 4) _wakeonlan ;; + 5) x-vdr -x & ;; + 6) _vdrversion ;; + esac +done + +_exit 0
\ No newline at end of file |
