#!/bin/bash COMMAND_FILE=/tmp/command corridor_light() { ./light.sh 0 "$1" } corridor_light_toggle() { ./light.sh 0 } lounge_light() { ./light.sh 1 "$1" } lounge_light_toggle() { ./light.sh 1 } e-lab_light() { ./light.sh 2 "$1" } e-lab_light_toggle() { ./light.sh 2 } cd "$(dirname $0)" rm -f "$COMMAND_FILE" mkfifo "$COMMAND_FILE" chmod 666 "$COMMAND_FILE" while true; do while IFS='' read -r line || [[ -n "$line" ]]; do echo "command received: $line" if echo "$line" | grep "!" >/dev/null; then # ! is used internally to execute shell commands! echo "ERROR: illegal characters" >&2 continue fi COLOR_STRING="$(echo "$line " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)" case "$line" in 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 "lounge_light lounge_light_toggle e-lab_light e-lab_light_toggle" >&2 ;; esac done < "$COMMAND_FILE" done