Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Connect to MQTT server and dump all topics to file
- host="" # Target MQTT server IP address
- topic="" # MQTT server topic
- topicoption="" # Value to set to MQTT topic
- checkdb (){
- grep -q "$host" host-list
- if [ $? == 0 ]; then
- echo "Host Found in database"
- else
- echo "$host" >> host-list
- fi
- }
- help (){
- echo "usage: $0 [command] [host]"
- echo -e "Commands:\n$0 dump [host]\n$0 info [host]\n$0 set [topic] [option] [host]\n$0 update\n$0 show [host]"
- }
- if [ ! -a host-list ]; then
- touch host-list
- fi
- case $1 in
- dump) # Get all topics from MQTT server
- host=$2
- echo "Dumping $host topics"
- mosquitto_sub -W 15 -q 1 -h $host -t \# -v > mqtt-$host
- checkdb
- echo "Done. Report saved to mqtt-$host"
- exit
- ;;
- info) # Get MQTT server info
- host=$2
- echo "Getting system info for $host"
- mosquitto_sub -W 15 -q 1 -h $host -t \$SYS/# -v
- checkdb
- echo "Done"
- exit
- ;;
- set) # Change a MQTT server topic option
- host=$4
- topic=$2
- topicoption=$3
- mosquitto_pub -W 15 -q 1 -h $host -t $topic -m $topicoption -v
- checkdb
- echo "Done"
- exit
- ;;
- update) # Update topic subscriptions
- echo "Updating host database"
- for host in $( cat host-list )
- do
- mosquitto_sub -W 15 -q 1 -h $host -t \# -v > mqtt-$host
- done
- exit
- ;;
- show) # Shows topics and settings for a host
- host=$2
- echo -e "Report for $2:\n"
- if [ -s mqtt-$host ]; then
- cat mqtt-host
- else
- echo "No report for $host"
- fi
- exit
- ;;
- *)
- help
- exit
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement