Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
freebsd:mosquitto [2021/12/11 17:29] alex |
freebsd:mosquitto [2022/05/15 18:16] (текущий) alex |
||
---|---|---|---|
Строка 70: | Строка 70: | ||
Password: | Password: | ||
Reenter password: | Reenter password: | ||
+ | |||
+ | Примеры использования утилиты mosquitto_passwd | ||
+ | |||
+ | * mosquitto_passwd [ -c | -D ] passwordfile username | ||
+ | * mosquitto_passwd -b passwordfile username password | ||
+ | * mosquitto_passwd -U passwordfile | ||
+ | Опции: | ||
+ | -b Запуск в пакетном режиме. Это позволяет ввести пароль в командной строке, который может быть удобным, но должен использоваться с осторожностью, поскольку пароль будет отображаться в командной строке и в истории команд. | ||
+ | |||
+ | -c Создаёт новый файл паролей. Если файл уже существует, он будет перезаписан. | ||
+ | |||
+ | -D Удалит указанного пользователя из файла паролей. | ||
+ | |||
+ | -U Эта опция может использоваться для обновления/конвертации файла паролей с паролями обычного текста в файл с использованием хэшированных паролей. Он изменит указанный файл. Он не определяет, были ли хэшированы пароли, поэтому его использование в файле паролей, который уже содержит хэшированные пароли, будет генерировать новые хэши на основе старых хешей и сделает файл паролей непригодным для использования. | ||
+ | |||
+ | //passwordfile// Файл с паролями для изменения. | ||
+ | |||
+ | //username// Имя пользователя для добавления/обновления/удаления. | ||
+ | |||
+ | //password// Пароль для использования в пакетном режиме. | ||
Запускаю mosquitto. | Запускаю mosquitto. | ||
Строка 84: | Строка 104: | ||
nobody mosquitto 10552 4 tcp4 10.215.130.1:1883 10.215.130.186:3387 | nobody mosquitto 10552 4 tcp4 10.215.130.1:1883 10.215.130.186:3387 | ||
+ | Для запуска mosquitto при старте системы в rc.config добавил строку | ||
mosquitto_enable="YES" | mosquitto_enable="YES" | ||
+ | Для добавления в топики информации с датчиков температуры написал скрипт | ||
+ | #!/bin/sh | ||
+ | while true | ||
+ | do | ||
+ | term0=`/usr/local/bin/digitemp_DS9097 -t 0 -q -c /usr/local/etc/digitemp.conf` | ||
+ | term1=`/usr/local/bin/digitemp_DS9097 -t 1 -q -c /usr/local/etc/digitemp.conf` | ||
+ | term2=`/usr/local/bin/snmpwalk -v1 -c ччччч_ro ХХХ.ХХХ.ХХХ.ХХХ .1.3.6.1.4.1.2021.2000.6.4.1.2.5.116.101.109.112.48.1 | awk -F'["]' '{ print $2 }'` | ||
+ | | ||
+ | /usr/local/bin/mosquitto_pub -h localhost -t sensors/ds18b20_0 -u temp -P pft,bcm -m $term0 | ||
+ | /usr/local/bin/mosquitto_pub -h localhost -t sensors/ds18b20_1 -u temp -P pft,bcm -m $term1 | ||
+ | /usr/local/bin/mosquitto_pub -h localhost -t sensors/ds18b20_2 -u temp -P pft,bcm -m $term2 | ||
+ | sleep 6 | ||
+ | done | ||
+ | |||
+ | Конструкция -F'["]' изменяет разделитель awk с пробела по умолчанию на двойные кавычки. | ||
+ | |||
+ | Чтобы скрипт стартовал как демон написал с папке /usr/local/etc/rc.d ещё одни скрипт | ||
+ | #!/bin/sh | ||
+ | | ||
+ | # PROVIDE: mqtt | ||
+ | # REQUIRE: DAEMON | ||
+ | # BEFORE: LOGIN | ||
+ | # KEYWORD: shutdown | ||
+ | | ||
+ | # | ||
+ | # Add the following lines to /etc/rc.conf to enable mqtt: | ||
+ | # | ||
+ | # mqtt_enable="YES" | ||
+ | # | ||
+ | # | ||
+ | | ||
+ | . /etc/rc.subr | ||
+ | | ||
+ | name=mqtt | ||
+ | rcvar=${name}_enable | ||
+ | pidfile="/var/run/${name}.pid" | ||
+ | | ||
+ | command=/scripts/mqqt-temp | ||
+ | start_cmd="${name}_start" | ||
+ | stop_cmd="${name}_stop" | ||
+ | status_cmd="${name}_status" | ||
+ | | ||
+ | mqtt_start() { | ||
+ | /usr/sbin/daemon -P ${pidfile} -r -f $command | ||
+ | } | ||
+ | | ||
+ | mqtt_stop() { | ||
+ | if [ -e "${pidfile}" ]; then | ||
+ | kill -s TERM `cat ${pidfile}` | ||
+ | else | ||
+ | echo "${name} is not running" | ||
+ | fi | ||
+ | } | ||
+ | | ||
+ | mqtt_status() { | ||
+ | if [ -e "${pidfile}" ]; then | ||
+ | echo "${name} is running as pid `cat ${pidfile}`" | ||
+ | else | ||
+ | echo "${name} is not running" | ||
+ | fi | ||
+ | } | ||
+ | | ||
+ | load_rc_config ${name} | ||
+ | run_rc_command "$1" | ||
+ | |||
+ | rc скрипт не демонизирует процесс, для демонизации используется строка **///usr/sbin/daemon//** | ||
+ | |||
+ | ссылки:\\ | ||
+ | https://www.freebsd.org/cgi/man.cgi?query=daemon\\ | ||
+ | https://serverfault.com/questions/873185/freebsd-rc-d-script-doesnt-start-as-a-daemon\\ | ||
+ | https://poptechno.ru/kak-ispolzovat-neskolko-razdelitelej-v-awk/\\ | ||
+ | http://snakeproject.ru/rubric/article.php?art=script_daemon_freebsd_28.05.2019\\ | ||
+ | https://habr.com/ru/post/137857/ |