chch-power/command_watcher.sh

67 lines
1.2 KiB
Bash
Executable File

#!/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