#!/bin/bash -- # shold be started from a separate account # access via ssh: # cat .ssh/authorized_keys # restrict,command="/home/automation/chch-power/shell.sh" ssh-rsa AAAA... COMMAND_FILE=/tmp/command if [ ! -p "$COMMAND_FILE" ]; then echo "ERROR; command watcher not listening:" >&2 exit 1 fi status() { STATUS="$(cat /tmp/status)" if [ -z "$STATUS" ]; then STATUS="geschlossen" fi echo "$STATUS" } corridor_light() { COMMAND="corridor_light $1" echo "$COMMAND" >> $COMMAND_FILE echo "OK $COMMAND" } corridor_light_toggle() { COMMAND="corridor_light_toggle" echo "$COMMAND" >> $COMMAND_FILE echo "OK $COMMAND" } lounge_light() { COMMAND="lounge_light $1" echo "$COMMAND" >> $COMMAND_FILE echo "OK $COMMAND" } lounge_light_toggle() { COMMAND="lounge_light_toggle" echo "$COMMAND" >> $COMMAND_FILE echo "OK $COMMAND" } e-lab_light() { COMMAND="e-lab_light $1" echo "$COMMAND" >> $COMMAND_FILE echo "OK $COMMAND" } e-lab_light_toggle() { COMMAND="e-lab_light_toggle" echo "$COMMAND" >> $COMMAND_FILE echo "OK $COMMAND" } read COMMAND COLOR_STRING="$(echo "$COMMAND " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)" case "$COMMAND" in status) status ;; corridor_light_toggle) corridor_light_toggle ;; corridor_light\ *) corridor_light $COLOR_STRING ;; lounge_light_toggle) lounge_light_toggle ;; lounge_light\ *) lounge_light $COLOR_STRING ;; e-lab_light_toggle) e-lab_light_toggle ;; e-lab_light\ *) e-lab_light $COLOR_STRING ;; *) echo "ERROR; available commands:" >&2 echo "status, corridor_light [string], corridor_light_toggle, lounge_light [string], lounge_light_toggle, e-lab_light [string], e-lab_light_toggle" >&2 exit 1 ;; esac exit 0