Используя Bash Script и mosquitto_sub, какой код будет использоваться для выполнения сценария на основе сообщения MQTT, истинного или ложного? - PullRequest
0 голосов
/ 06 июля 2019

Мне нужно выполнить сценарий оболочки, когда приходит MQTT-сообщение «1», как я могу это сделать с помощью сценария bash?

Я думаю, что это как-то связано с тем, как слушают; иначе, но я не знаю синтаксис, который следует использовать.

Пока все, что у меня есть, это подписка.

#!/bin/bash
mosquitto_sub -t "1999-Connect"

За предложение ниже

#!/bin/bash
mosquitto_sub -t "1999-Connect"
If message ="1" sudo bash update.sh
else
restart script.

1 Ответ

0 голосов
/ 06 июля 2019

Спасибо за то, что проголосовали за неподдельный вопрос, потому что на смутный комментарий не ответили так, как хотелось бы. Некоторые отзывы лучше, чем никаких, кажется. Всем, кто заинтересован в ответе на вопрос, я вставлю его ниже. Похоже, что моя концепция переменных была близка, но я думаю, что легче записать в файл, чем переменную.

Запись входящей команды в файл с именем task:

mosquitto_sub -h SERVER -t '/TOPIC/' >> task

затем прочитайте файл и выполните последнюю команду с помощью следующего скрипта:

NUMOFLINES=$(wc -l < task)


while :
do

        NEWLINE=$(wc -l < task)

        if [ "$NEWLINE" -gt "$NUMOFLINES" ]
        then
                NUMOFLINES=$(wc -l < task)
                LASTCOMMAND=$(tail -n 1 task)
                eval ./$LASTCOMMAND
        fi

done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...