diff options
| -rw-r--r-- | abs/core/linhes-scripts/PKGBUILD | 6 | ||||
| -rwxr-xr-x | abs/core/linhes-scripts/idle.sh | 63 | 
2 files changed, 54 insertions, 15 deletions
| diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD index 4ffdc6f..6f70ebe 100644 --- a/abs/core/linhes-scripts/PKGBUILD +++ b/abs/core/linhes-scripts/PKGBUILD @@ -3,12 +3,12 @@  pkgname=linhes-scripts  pkgver=7 -pkgrel=48 +pkgrel=49  pkgdesc="Various scripts that help to make LinHES, LinHES."  arch=('i686' 'x86_64')  license=('GPL2')  depends=('xosd' 'cpulimit' 'screen' 'mencoder' 'tablet-encode' 'mplayer' -         'normalize' 'handbrake-cli' 'mkvtoolnix') +         'normalize' 'handbrake-cli' 'mkvtoolnix' 'gnu-netcat')  url="http://linhes.org/"  install="linhes-scripts.install"  source=( @@ -85,7 +85,7 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'           '3b776bbff68906ddc2f62b7e0dde3fe4'           'a57641fb63d7bb6d92a438f1ea779a57'           '3d0adf26280cde55a0c47188fff34826' -         '25dd5b8ec0482d561b481bfce051d648' +         '439026b38a9d3d27478078887639152b'           'b2c3dd48a4abb976eda2d5fbf22a173a'           'b527b01d119d3bc33b8fa69bdf1082bb'           '9d077c24d102fa02e4f417d639d8b00a' diff --git a/abs/core/linhes-scripts/idle.sh b/abs/core/linhes-scripts/idle.sh index 70db6f0..7733b27 100755 --- a/abs/core/linhes-scripts/idle.sh +++ b/abs/core/linhes-scripts/idle.sh @@ -1,12 +1,14 @@  #!/bin/bash  usage () { -    echo "Usage: $0 [-h] [-s] [-t <minutes_needed>] [-l] [-v]" +    echo "Usage: $0 [-h] [-s] [-t <minutes_needed>] [-l] [-w] [-d] [-v]"      echo      echo "-h - Print this help/usage message and quit"      echo "-s - Run silently (default is verbose)"      echo "-t - Minutes of idle time needed (default is 20)"      echo "-l - Check for user logins (default: false - do not check)" +    echo "-w - Check for open windows (default: false - do not check)" +    echo "-d - Include mythshutdown daily wake in system busy (default: daily wake is system idle)"      echo "-v - Be more verbose for debugging"      echo      echo "Silent mode is recommended for use in cron jobs or scripts." @@ -24,15 +26,19 @@ mysql_cmd () {  # Command line argument handling  VERBOSE=1  LOGINS=0 +WINDOWS=0 +DAILY=0  TIME_BEFORE=20  TIME_AFTER=5    # Only adjustable by editing here -while getopts "hslt:v" OPT ; do +while getopts "hslwdt:v" OPT ; do      case $OPT in      h) usage 0 ;;      s) VERBOSE=0 ;;      t) TIME_BEFORE=$OPTARG ;;      l) LOGINS=1 ;; +    w) WINDOWS=1 ;; +    d) DAILY=1 ;;      v) VERBOSE=2 ;;      *) usage 1 ;;      esac @@ -41,14 +47,17 @@ done  shift $(($OPTIND - 1))  [ -n "$*" ] && usage 1 -msg "Checking what MythTV is doing now or plans within $TIME_BEFORE minutes..." +msg "Checking what MythTV is doing now or plans to within $TIME_BEFORE minutes..."  msg  /usr/bin/mythshutdown -s 1  BUSY="$?"  msg "mythshutdown returned $BUSY" -# Ignore certain non-zero flag values -BUSY=$(($BUSY & 0x2F)) +if [ "$DAILY" -eq 0 ] ; then +    msg "  including daily wake (64) as system idle" +    # Ignore certain non-zero flag values +    BUSY=$(($BUSY & 0x2F)) +fi  SCHEMALOCK=$(mysql_cmd "select count(*) from schemalock")  msg "schemalock $SCHEMALOCK" @@ -95,24 +104,54 @@ if [ "$VERBOSE" -ge 2 ] ; then          }'  fi +# Check all frontends if they are playing +HOSTNAMES=$(mysql_cmd "select hostname from settings where value = 'FrontendIdleTimeout'") +PLAYING=0 +for HOST in $HOSTNAMES +do +    if [ "$VERBOSE" -ge 2 ]; then +        msg "Checking if $HOST is playing recordings or videos..." +    fi +ncOUTPUT=$(nc $HOST 6546  << EOF +query location +quit +EOF +) +    if [[ "$ncOUTPUT" == *"# Playback "* ]]; then +        PLAYING=$(( $PLAYING + 1 )) +        msg "$HOST is playing a recording or video" +    else +        msg "$HOST is NOT playing a recording or video" +    fi +done + +# Check for users logged in  if [ "$LOGINS" -ge 1 ] ; then    USERS=`/usr/bin/last | /bin/grep "still logged in"  | awk '{ print $1 }'`    if [ -n "$USERS" ] ; then      LOGINS=1 -    msg "The following user(s) are still logged in: ${USERS}" +    msg "The following user(s) are still logged in:" +    msg "${USERS}"    else      LOGINS=0 -    msg "No user(s) are logged in..." +    msg "No users are logged in"    fi  fi  # Check for open windows -/usr/LH/bin/xwin_find.sh -q '.*(mythtv@|xterm|Firefox|Namoroka|Opera).*' -WINDOWS="$?" -WINDOWS=$(($WINDOWS == 0)) -msg "windows $WINDOWS" +FOUNDWINDOWS=0 +if [ "$WINDOWS" -ge 1 ] ; then +    /usr/LH/bin/xwin_find.sh -q '.*(mythtv@|xterm|Firefox|Namoroka|Opera|Chromium).*' +    FOUNDWINDOWS="$?" +    FOUNDWINDOWS=$(($FOUNDWINDOWS == 0)) +    if [ "$FOUNDWINDOWS" -eq 0 ] ; then +        msg "no application windows open" +    else +        msg "one or more application windows open" +    fi +fi -activities=$(($BUSY + $SCHEMALOCK + $JOBS + $INUSE + $UPCOMING + $LOGINS + $WINDOWS)) +activities=$(($BUSY + $SCHEMALOCK + $JOBS + $INUSE + $UPCOMING + $PLAYING + $LOGINS + $FOUNDWINDOWS))  msg  if [ "$activities" -eq 0 ] ; then      msg "System is idle" | 
