--- /dev/null
+#!/bin/bash
+
+if [ "$1" = "stop" ]
+then
+
+ for i in `pgrep -f "/bin/bash /opt/mqtt-mpd/mqmpdj"`
+ do
+ killtree $i 9
+ done
+
+ exit 0
+
+fi
+
+. /opt/mqtt-mpd/mqmpd.cfg
+
+# запускаем процессы, мониторящие состояние
+
+i=0
+while [ "x${hosts[i]}" != "x" ]
+do
+
+ /opt/mqtt-mpd/mqmpdj ${hosts[i]} ${passwd[i]} &
+
+ i=$(( $i + 1 ))
+
+done
+
+# сами остаемся слушать команды
+
+mosquitto_sub -v -h $mqhost -p $mqport -t "$mqcmd/#" -u $mquser -P $mqpassword | while read line
+do
+
+ template="s!$mqcmd/!!"
+ addr=`echo $line | cut -f 1 -d " " | sed $template`
+ arg=`echo $line | cut -f 2 -d " "`
+ echo $addr $arg
+
+ host=`echo $addr | cut -f 1 -d "/"`
+ cmd=`echo $addr | cut -f 2 -d "/"`
+
+ i=0
+ while [ "x${hosts[i]}" != "x" ]
+ do
+ if [ "${hosts[i]}" = "$host" ]
+ then
+ mpdpass=${passwd[i]}
+ if [ "$mpdpass" = "-" ]
+ then
+ mpccmd="mpc -h $host"
+ else
+ mpccmd="mpc -h $host -P $mpdpass"
+ fi
+ break
+ fi
+ i=$(( $i + 1 ))
+ done
+
+ arg=`printf "%q" $arg`
+ if [[ "$arg" =~ [A-Za-z0-9]+ ]]
+ then
+
+ case $cmd in
+
+ volume)
+ reply=( `$mpccmd volume`)
+ currvolume=`echo ${reply[1]} | sed 's/%//'`
+ if [ "$currvolume" ]
+ then
+ if [ "$arg" -gt "$currvolume" ]
+ then
+ delta=$(( $arg - $currvolume ))
+ $mpccmd volume +$delta
+ fi
+ if [ "$arg" -lt "$currvolume" ]
+ then
+ delta=$(( $currvolume - $arg ))
+ $mpccmd volume -$delta
+ fi
+ fi
+ ;;
+ status)
+ case $arg in
+ playing)
+ $mpccmd play
+ ;;
+ stopped)
+ $mpccmd stop
+ ;;
+ paused)
+ $mpccmd pause
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ repeat|random|single|consume)
+ $mpccmd $cmd $arg
+ ;;
+ *)
+ echo "Неизвестная команда $cmd"
+ ;;
+
+ esac
+
+ else
+
+ echo "Недопустимый аргумент $arg"
+
+ fi
+
+done