ubuntuusers.de

Mythshutdown anpassen

Status: Ungelöst | Ubuntu-Version: Xubuntu 10.10 (Maverick Meerkat)
Antworten |

Patrick31698

Anmeldungsdatum:
6. Februar 2008

Beiträge: 676

Hallo, ich habe schon in einem anderen Thread mit meinen Problemen zum automatischen Aufwecken und Abschalten von MythTV gefragt und auch Hilfe bekommen. DANKE dafür. Ich habe die Ganze Sache auch zum Laufen bekommen. Ich habe das Wake up nach dieser Anleitung zum Laufen gebracht :http://www.mythtv.org/wiki/ACPI_Wakeup In MythTV eingebunden habe ich das dann in Verbindung mit Mythwelcome. Soweit so gut. Wenn ich die Anleitung aus dem MythTV Wiki zum manuellen Testen nachkoche, fährt der Rechner auch richtig runter mit

sudo shutdown -P now

. Soll heissen alles ist ausgeschaltet. Nur ein Standylämpchen am PC leuchtet. Wenn ich Mythwelcome / Mythshutdown den Job überlasse, wird der Rechner zwar runtergefahren, das Netzteil aber bleibt an. Ich möchte aber dass soviel wie möglich ausgeschaltet wird. Ich habe mal in Mythshutdown geschaut.

dort taucht ein shutdown -r now auf. Ziemlich weit unten. Ich habe das markiert.

Kann ich mythshutdown beibringen, ein shutdown -P now zu machen? Reicht es das -r einfach in ein -P zu ändern?

Eine Sache ist mir auch noch aufgefallen, man soll in Mythwelcome die Einstellungen für nvram wake up rausnehmen, mein MythTV weigert sich aber standhaft. Nach jedem Start stehen die Sachen wieder drin. Liegt das an dem Parameter

  • -shutdown (shutdown set nvram-wakeup and shutdown)" ?

#!/bin/bash
# shutdown and wakeup script for mythbackend
# by Jan Doelle (tuxnewbie) rev 0.4 28.07.2004

NAME="mythshutdown"
USER="mythtv"
GROUP="video"

#set this option if your bios not support date
#WAKEUP_DAILY="07:00"

CONFIG_FILE=/etc/mythshutdown.conf

BEEP=/usr/bin/beep

MYTH_LOG_FOLDER=/var/log/mythtv
MYTH_TMP_FOLDER=/var/mythtv

MYTH_LOG_FILE=$MYTH_LOG_FOLDER/mythshutdown.log

NVRAMCMD=/usr/bin/nvram-wakeup
#NVRAMCFG=/etc/nvram-wakeup.a7n8x-x                  # avoid using default nvram-wakeup.conf delieved by nvram-wakeup package

MYTH_SCHEDULE_TIME_FILE=$MYTH_TMP_FOLDER/myth-schedule-time	# contains time when mythbackend wants start up to record
MYTH_SCHEDULE_VRWU_FILE=$MYTH_TMP_FOLDER/myth-schedule-vrwu	# contains time when system will wakeup next
MYTH_SCHEDULE_FLAG_FILE=$MYTH_TMP_FOLDER/myth-schedule-flag	# flag file will create be
MYTH_SHUTDOWN_LOCK_FILE=$MYTH_TMP_FOLDER/myth-shutdown-lock	# if exists mythshudown --check will return 1 reset idle count

#prepare tmp folder
mkdir -p $MYTH_TMP_FOLDER
chown -R $USER $MYTH_TMP_FOLDER

#
# log function
#

log () {
    stamp=$(date +"[%m-%d-%Y %H:%M:%S]")
    echo "$stamp $1" >> $MYTH_LOG_FILE
    
    #debug
    echo "$stamp $1"
}

#
# Overwrite Default Settings
#
if [ -e $CONFIG_FILE ]; then
 . $CONFIG_FILE
fi

#
# check nvram-wakeup exists
#

#test -x $NVRAMCMD || exit 1

EXITSTATUS=1

case "$1" in
   
   --lock)
      log "lock shutdown"
           
      if [ ! -f $MYTH_SHUTDOWN_LOCK_FILE ]; then
         #cat /dev/null > $MYTH_SHUTDOWN_LOCK_FILE
         touch $MYTH_SHUTDOWN_LOCK_FILE
         chmod a+rw-x $MYTH_SHUTDOWN_LOCK_FILE
         chown $USER $MYTH_SHUTDOWN_LOCK_FILE
         chgrp $GROUP $MYTH_SHUTDOWN_LOCK_FILE
         if [ -x $BEEP ]; then
            $BEEP -f 261.6 -l 200
         fi
      else
         log "allready locked"
      fi
      EXITSTATUS=0
   ;;
   --unlock)
      log "unlock shutdown"
     
      if [ -f $MYTH_SHUTDOWN_LOCK_FILE ]; then
         rm $MYTH_SHUTDOWN_LOCK_FILE
         if [ $? != 0 ]; then
            log "unable to unlock shutdown"
         fi
         if [ -x $BEEP ]; then
            $BEEP -f 523.2 -l 200
         fi
      else
         log "wasn't locked"
      fi
      EXITSTATUS=0
   ;;
   --check)
      log "check shutdown"
      
      # mythbackend wants 0=ok shutdown, 1=reset idlecount, 2=wait for frontend
      
      if [ -f $MYTH_SHUTDOWN_LOCK_FILE ]; then
         # echo "Locked"
         log "shutdown is locked"
         EXITSTATUS=1
      else
         echo "Unlocked"
	#check for PC's in network (no mythtv)
	#if ( ! /bin/ping -c 1 -I eth0 192.168.70.21 >/dev/null \
	#	   && grep -q "192.168.70.21 " /proc/net/arp \
	#	) then 
		EXITSTATUS=0
		log "free to shutdown" 
	#else
	#	log "another PC in Network found"
	#	EXITSTATUS=0
	#fi

      fi
   ;;
   --setwakeup)
      log "set wakeup time. given is time = $time or ($2) and third param: $3"
      
      WAKEUPTIME=$(date --date="$2 $3" +"%R %F")
      log "wakeup time is: $WAKEUPTIME"
      
      if [ $? = 0 ]; then
         echo "$WAKEUPTIME" > $MYTH_SCHEDULE_TIME_FILE
         if [ $? = 0 ]; then
            chmod a+rw-x $MYTH_SCHEDULE_TIME_FILE
            chown $USER $MYTH_SCHEDULE_TIME_FILE
            chgrp $GROUP $MYTH_SCHEDULE_TIME_FILE
         else
            log "writing $MYTH_SCHEDULE_TIME_FILE failed"
         fi
         
         echo "$WAKEUPTIME" > $MYTH_SCHEDULE_FLAG_FILE
         if [ $? = 0 ]; then
            chmod a+rw-x $MYTH_SCHEDULE_FLAG_FILE
            chown $USER $MYTH_SCHEDULE_FLAG_FILE
            chgrp $GROUP $MYTH_SCHEDULE_FLAG_FILE
         else
            log "writing $MYTH_SCHEDULE_FLAG_FILE failed"
         fi
         EXITSTATUS=0
      else
         # error in format
         log "--setwakeup: invalid date format ($2 $3) must be hh:mm yyyy-MM-dd"
         EXITSTATUS=1
      fi
      # echo "WAKEUPTIME: $WAKEUPTIME $?"
   ;;
   --shutdown)
      log "shutdown"
      # now the horror starts
      # check 
      #NVWAKEUPTIME=0
      
      # current time
      TSNOW=$(date +%s)
      
      # daily wakeup time
      if [ -n "$WAKEUP_DAILY" ]; then
	      TSDAY=$(date -d "$WAKEUP_DAILY" +%s)
	      if [ "$TSDAY" -gt "$TSNOW" ]; then
	         log "daily wakeup today at $WAKEUP_DAILY"
	      else
	         # next daily is tommorrow
	         log "daily wakeup tomorrow at $WAKEUP_DAILY"
	         TSDAY=$(( $TSDAY + (24*60*60) ))
	      fi
      
	      if [ "$TSDAY" -lt $(($TSNOW + 15*60)) ]; then
	      # forward daily 15 minutes (avoid to short time for wakeup shedule)
		  log "daily wakeup delayed about 15 minutes"
		  TSDAY=$(($TSDAY + 15*60))
	      fi
      fi     
      # check schedule
      if [ -f $MYTH_SCHEDULE_FLAG_FILE ]; then
         
         # a wakeup was scheduled
         if [ -f $MYTH_SCHEDULE_TIME_FILE ]; then
         
            WAKEUPTIME=$(cat $MYTH_SCHEDULE_TIME_FILE) # | awk '{print $1}') 
            log "wakeup scheduled at: $WAKEUPTIME"
            
            TSWKU=$(date -d "$WAKEUPTIME" +%s)
            TSDELTA=$(($TSWKU-$TSNOW))
            
            if [ "$TSDELTA" -lt "0" ] ; then
               log "schedules in pass. schedule deleted"
               rm $MYTH_SCHEDULE_TIME_FILE
               log "wakeup at daily wakeup time $WAKEUP_DAILY ($TSDAY)"
	       NVWAKEUPTIME=$TSDAY
            elif [ "$TSWKU" -lt "0$TSDAY" ]; then
               log "wakeup at scheduled time $WAKEUPTIME ($TSWKU)"
               NVWAKEUPTIME=$TSWKU
            elif [ -n "$TSDAY" ]; then
               log "wakeup at daily wakeup time $WAKEUP_DAILY ($TSDAY)"
               NVWAKEUPTIME=$TSDAY
       	    elif [ -n "$TSWKU" ]; then
	       log "wakeup at scheduled time $WAKEUPTIME ($TSWKU) and no daily wakeup time set"
	       NVWAKEUPTIME=$TSWKU
            else 
               log "not daily walkuptime"
               # panic
            fi
         fi
         echo "$NVWAKEUPTIME" > $MYTH_SCHEDULE_VRWU_FILE
         if [ $? = 0 ]; then
            chmod a+rw-x $MYTH_SCHEDULE_VRWU_FILE
            chown $USER $MYTH_SCHEDULE_VRWU_FILE
            chgrp $GROUP $MYTH_SCHEDULE_VRWU_FILE
         else
            log "writing $MYTH_SCHEDULE_VRWU_FILE failed"
         fi
         
         # delete flag file
         rm $MYTH_SCHEDULE_FLAG_FILE
      else
         # no wakeup was set
         log "no wakeup time set"
         if [ -n "$TSDAY" ]; then
            log "wakeup at daily wakeup time"
            NVWAKEUPTIME=$TSDAY
         else
            NVWAKEUPTIME=""
         fi
      fi
      
      # stop here to debug
      # exit 0
      
      SHUTDOWNMODE=2
      
      if [ -n "${NVWAKEUPTIME}" ]; then
         if [ -n "${NVRAMCFG}" ]; then
            log "$NVRAMCMD --configfile "$NVRAMCFG" --syslog --settime $NVWAKEUPTIME"
            $NVRAMCMD --configfile "$NVRAMCFG" --syslog --settime "$NVWAKEUPTIME">/dev/null
         else
            log "$NVRAMCMD --syslog --settime $NVWAKEUPTIME"
            $NVRAMCMD --syslog --settime "$NVWAKEUPTIME">/dev/null
         fi

         SHUTDOWNMODE=$?
         log "$NVRAMCMD exited with code $SHUTDOWNMODE"
         log "Currently we don't trust exit code 0, forcing to 1..."
         SHUTDOWNMODE=1
      fi
  
      case "$SHUTDOWNMODE" in
         0)
            log "everthing looks fine, shutting down ..."
            shutdown -h now
            EXITSTATUS=0
         ;;
         1)
            log "everthing looks fine, but reboot is needed"
            log "sending command to grub ..."
            grub-set-default 1
#            echo "savedefault --default=1 --once quit" | sudo grub
     log ".."
     log "."
            log "shutting down ..."
            shutdown -r now
            EXITSTATUS=0
         ;;
	 2)
	    log "no shutdown-time was set"
	    log "shutting down wihtout reboot"
	    shutdown -h now
	 ;;
         *)
            log "panic. invalid shutdown mode, do nothing"
            EXITSTATUS=1
         ;;
      esac
   ;;
   --startup)
      # check startup at scheduled time 0 yes 1 no (manualy)   
      if [ -f $MYTH_SCHEDULE_VRWU_FILE ]; then
         TS_WAKEUP=$(cat $MYTH_SCHEDULE_VRWU_FILE) # | awk '{print $1}') 
         TS_NOW=$(date +%s)
         TS_DELTA=$(($TS_WAKEUP - $TS_NOW))
         if [ $TS_DELTA -gt $((15*60)) ]; then
            log "startup manualy"
            EXITSTATUS=1
         else
            log "startup automaticly"
            EXITSTATUS=0
         fi
      else
         log "startup manualy"
         EXITSTATUS=1
      fi
   
   ;;
   *)
   #usage
      echo "Usage of $NAME"
      echo "--setwakeup time (time=hh:mm yyyy-MM-dd sets the wakeup time. don't write it into nvram)"
      echo "--shutdown       (shutdown set nvram-wakeup and shutdown)" 
      echo "--startup        (check startup. check will return 0 if automatic else 1 for manualy)"
      echo "--check          (check shutdown possible returns 0=ok and 1=reset idle check)"
      echo "--lock           (disable shutdown. check will return 1)"
      echo "--unlock         (enable shutdown. check will return 0)"
    ;;
esac

if  [ "1" -eq "0" ]; then
   echo "Diagnostics"
   echo "$MYTH_TMP_FOLDER"
   ls -l $MYTH_TMP_FOLDER
   echo "$MYTH_LOG_FOLDER"
   ls -l $MYTH_LOG_FOLDER
fi
exit $EXITSTATUS

Nervengift

Avatar von Nervengift

Anmeldungsdatum:
26. Juli 2009

Beiträge: 232

Patrick31698 schrieb:

Reicht es das -r einfach in ein -P zu ändern?

-r sorgt für einen Reboot

ich denke du musst die Zeile

shutdown -h now

in

shutdown -P now

ändern

Patrick31698

(Themenstarter)

Anmeldungsdatum:
6. Februar 2008

Beiträge: 676

leider finde ich das skript nicht. Ich dachte ich würde in /etc die Mythshutdown.conf finden und könnte da was ändern, aber ich findde sie nicht

Nervengift

Avatar von Nervengift

Anmeldungsdatum:
26. Juli 2009

Beiträge: 232

die mythshutdown.conf musst du wahrscheinlich anlegen, wenn du sie brauchst, aber den shutdown anpassen musst du eh direkt im skript

Patrick31698

(Themenstarter)

Anmeldungsdatum:
6. Februar 2008

Beiträge: 676

Ich habe das erst jetzt gesehen, dass dieses Skript ja schon von 2004 ist. Das verwendet noch NVRAM Wakeup. Ausserdem ist das aktuelle. Mythwakeup in usr/bin/ und für mich nicht editierbar. Schade eigentlich.....

Nervengift

Avatar von Nervengift

Anmeldungsdatum:
26. Juli 2009

Beiträge: 232

inwiefern nicht editierbar? hast du keine sudo-Rechte?

Patrick31698

(Themenstarter)

Anmeldungsdatum:
6. Februar 2008

Beiträge: 676

es ist eine binär Datei

Antworten |