added command handling

This commit is contained in:
root 2017-02-22 22:33:58 +00:00
parent b1883f0ec6
commit e177bedd69
3 changed files with 68 additions and 1 deletions

38
command_watcher.sh Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
COMMAND_FILE=/tmp/command
COMMAND_FILE_TMP=/tmp/command_tmp
lounge_light() {
echo "not implemented"
}
lounge_light_toggle() {
./light.sh
}
cd "$(dirname $0)"
touch "$COMMAND_FILE"
chmod 666 "$COMMAND_FILE"
while inotifywait -qq -e close_write "$COMMAND_FILE"; do
mv "$COMMAND_FILE" "$COMMAND_FILE_TMP"
sleep .1 # wait for possible further/parallel writes to end
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
case "$line" in
lounge_light_toggle)
lounge_light_toggle
;;
lounge_light*)
lounge_light "$COMMAND"
;;
*)
echo "ERROR; available commands:" >&2
echo "lounge_light lounge_light_toggle" >&2
;;
esac
done < "$COMMAND_FILE_TMP"
rm "$COMMAND_FILE_TMP"
touch "$COMMAND_FILE"
chmod 666 "$COMMAND_FILE"
done

9
run.sh
View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
cd "$(dirname $0)" cd "$(dirname $0)"
( (
while true; do while true; do
/usr/bin/python3 chch-power.py >/dev/null 2>&1 /usr/bin/python3 chch-power.py >/dev/null 2>&1
@ -8,3 +9,11 @@ cd "$(dirname $0)"
done done
) & ) &
disown $! disown $!
(
while true; do
./command_watcher.sh >/dev/null 2>&1
sleep 1
done
) &
disown $!

View File

@ -5,6 +5,8 @@
# cat .ssh/authorized_keys # cat .ssh/authorized_keys
# command="/home/automation/chch-power/shell.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA... # command="/home/automation/chch-power/shell.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA...
COMMAND_FILE=/tmp/command
status() { status() {
STATUS="$(cat /tmp/status)" STATUS="$(cat /tmp/status)"
if [ -z "$STATUS" ]; then if [ -z "$STATUS" ]; then
@ -13,14 +15,32 @@ status() {
echo "$STATUS" echo "$STATUS"
} }
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"
}
read COMMAND read COMMAND
case "$COMMAND" in case "$COMMAND" in
status) status)
status status
;; ;;
lounge_light_toggle)
lounge_light_toggle
;;
lounge_light*)
lounge_light "$(echo $COMMAND | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)"
;;
*) *)
echo "ERROR; available commands:" >&2 echo "ERROR; available commands:" >&2
echo "status" >&2 echo "status lounge_light lounge_light_toggle" >&2
exit 1 exit 1
;; ;;
esac esac