Skip to content

Instantly share code, notes, and snippets.

@GervaisdeM
Created May 2, 2018 01:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GervaisdeM/d076eef120140d029254605b7e8f7b9f to your computer and use it in GitHub Desktop.
Save GervaisdeM/d076eef120140d029254605b7e8f7b9f to your computer and use it in GitHub Desktop.
#!/bin/bash
if [ -z "$SUDO_COMMAND" ]
then
#echo -e "Only root can run this script.\nRelaunching script with sudo.\n"
sudo $0 $*
exit 0
fi
HASS_VENV_PATH="/srv/homeassistant"
HASS_PYTHON_PATH="$HASS_VENV_PATH/bin"
HASS_EXEC="$HASS_PYTHON_PATH/hass"
HASS_CONF="/etc/homeassistant"
HASS_SHELL="--shell=/bin/bash"
HASS_START_STOP="/bin/systemctl $1 home-assistant.service"
HASS_CHECK="$HASS_PYTHON_PATH/python $HASS_EXEC --config $HASS_CONF --script check_config"
PID_SEARCH="/usr/bin/pgrep -nf $HASS_EXEC"
HASS_USER=homeassistant
NUM_BACKUPS=`ls -1d $HASS_VENV_PATH-* | grep -v current | sort | wc -l`
BACKUP_TO_HOLD=5
HASS_VERSION=`$HASS_EXEC --version`
set -e
case "$1" in
start)
if [ `$PID_SEARCH` ]; then
echo "Home-Assistant has already started."
else
echo "Starting Home-Assistant."
$HASS_START_STOP
fi
;;
stop)
if [ `$PID_SEARCH` ]; then
echo "Stopping Home-Assistant."
$HASS_START_STOP
else
echo "Home-Assistant is not running."
fi
;;
force-stop)
if [ `$PID_SEARCH` ]; then
echo "Force stopping Home-Assistant."
/bin/su - $HASS_USER $HASS_SHELL -c "kill -9 `$PID_SEARCH`"
else
echo "Home-Assistant is not running."
fi
;;
upgrade|update)
$0 stop
echo "Upgrading Homeassistant"
if [ ! -d $HASS_VENV_PATH-$HASS_VERSION ]; then
cp -rp $HASS_VENV_PATH-current $HASS_VENV_PATH-$HASS_VERSION
fi
/bin/su - $HASS_USER $HASS_SHELL -c "$HASS_PYTHON_PATH/pip3 install --upgrade homeassistant"
$0 start
# cleanup
if [ "$NUM_BACKUPS" -gt "$BACKUP_TO_HOLD" ];then
let NUM_BACKUPS_TO_REMOVE=NUM_BACKUPS-BACKUP_TO_HOLD
BACKUPS_TO_REMOVE=`ls -1d $HASS_VENV_PATH-* | grep -v current | sort | head -n$NUM_BACKUPS_TO_REMOVE`
for EXPIRED in $BACKUPS_TO_REMOVE; do
rm -rf $EXPIRED
done
fi
;;
check|configcheck|checkconfig|configtest)
/bin/su - $HASS_USER $HASS_SHELL -c "$HASS_CHECK"
;;
status)
if [ `$PID_SEARCH` ]; then
echo "Home-Assistant version $HASS_VERSION is running."
$HASS_START_STOP
else
echo "Home-Assistant is not currently running, you can start it with $0 start"
fi
;;
restart) $0 stop ; $0 start ;;
*)
echo "Usage: $0 {start|stop|restart|status|check|force-stop|upgrade}"
exit 1
;;
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment