This script uses the kodi-send
tool to prevent Kodi from shutting down if there are active SSH, SAMBA, or NFS connections. The script checks every 60 seconds, and if at least one connection exists the command InhibitIdleShutdown(true)
is sent to Kodi.
Create /storage/.config/prevent_idle.sh
with the following content:
#!/bin/sh​IDLE_SHUTDOWN_ALLOWED_LAST_STATE=-1​while truedoKODI_RUNNING=`ps -A | grep kodi.bin | grep -v grep | wc -l`if [ 1 == $KODI_RUNNING ] ; thenSSH_ACTIVE=`netstat -tnpa | grep 'tcp.*:22.*ESTABLISHED.*' | wc -l`NFS_ACTIVE=`netstat -tnpa | grep 'tcp.*:111.*ESTABLISHED.*' | wc -l`SMB_ACTIVE=`netstat -tnpa | grep 'tcp.*:445.*ESTABLISHED.*' | wc -l`[ $SSH_ACTIVE -gt 0 -o $NFS_ACTIVE -gt 0 -o $SMB_ACTIVE -gt 0 ] && IDLE_SHUTDOWN_ALLOWED=1 || IDLE_SHUTDOWN_ALLOWED=0if [ $IDLE_SHUTDOWN_ALLOWED_LAST_STATE != $IDLE_SHUTDOWN_ALLOWED ] ; thenIDLE_SHUTDOWN_ALLOWED_LAST_STATE=$IDLE_SHUTDOWN_ALLOWEDkodi-send --action="AllowIdleShutdown"if [ 0 == $IDLE_SHUTDOWN_ALLOWED ] ; thenkodi-send --action="InhibitIdleShutdown(false)"elsekodi-send --action="InhibitIdleShutdown(true)"fififisleep 60done
Call the script from /storage/.config/autostart.sh
so it runs as a background task. It will continue to monitor the state of connections until the device is halted.
(/usr/bin/bash /storage/.config/prevent_idle.sh)&
This script identifies your public IP address and updates a https://dynu.com Dynamic DNS record.
Create /storage/.config/dynu_update.sh
with the following content:
#!/bin/sh​DYNU_USERNAME="username"DYNU_PASSWORD="password-hash"DYNU_HOSTNAME="example.dynu.com"REFRESH_RATE=60​PUBLIC_IP=0.0.0.0​test_ip (){if [ -n $2 ] ; thenif [ $1 != $2 ] ; thenupdate_ip $2echo $2elseecho $1fifi}​update_ip (){DYNU_WGET="https://api.dynu.com/nic/update?hostname=$DYNU_HOSTNAME&myip=$1&username=$DYNU_USERNAME&password=$DYNU_PASSWORD"DYNU_UPDATE=`wget $DYNU_WGET -O - -q ; echo`(>&2 echo "$DYNU_UPDATE")}​while true; doPUBLIC_IP_TEST=`wget http://ipecho.net/plain -O - -q ; echo`echo $PUBLIC_IP - $PUBLIC_IP_TESTPUBLIC_IP="$(test_ip $PUBLIC_IP $PUBLIC_IP_TEST)"sleep $(REFRESH_RATE)PUBLIC_IP_TEST=`curl -s checkip.dyndns.org | sed 's#.*Address: \(.*\)</b.*#\1#'`echo $PUBLIC_IP - $PUBLIC_IP_TESTsleep $(REFRESH_RATE)PUBLIC_IP_TEST=`curl -s ifconfig.co`echo $PUBLIC_IP - $PUBLIC_IP_TESTPUBLIC_IP="$(test_ip $PUBLIC_IP $PUBLIC_IP_TEST)"sleep $(REFRESH_RATE)done
Call the script from /storage/.config/autostart.sh
so it runs as a background task. It will continue to monitor the state of connections until the device is halted.
(/usr/bin/bash /storage/.config/dynu_update.sh)&
Note: If you set the refresh rate under 60 seconds the checkip.dyndns.org
server will probably block your requests causing the script to fail.