#!/bin/bash exists() { command -v "$1" >/dev/null 2>&1 } echo_pad() { string=$1 pad=$2 printf '%s' "$string" printf '%*s' $(( $pad - ${#string} )) } useAvahi() { echo_pad "#" 4 echo_pad "HOSTNAME" 20 echo_pad "IP" 20 echo_pad "DEVICE" 30 echo_pad "VERSION" 10 echo printf -v line '%*s\n' 84 echo ${line// /-} counter=0 avahi-browse -t -r -p "_arduino._tcp" 2>/dev/null | grep ^= | sort -t ';' -k 3 | while read line; do (( counter++ )) hostname=`echo $line | cut -d ';' -f4` ip=`echo $line | cut -d ';' -f8` txt=`echo $line | cut -d ';' -f10` board=`echo $txt | sed -n "s/.*espurna_board=\([^\"]*\).*/\1/p"` version=`echo $txt | sed -n "s/.*espurna_version=\([^\"]*\).*/\1/p"` echo_pad "$counter" 4 echo_pad "$hostname" 20 echo_pad "$ip" 20 echo_pad "$board" 30 echo_pad "$version" 10 echo done echo } # ------------------------------------------------------------------------------ # Welcome echo echo "--------------------------------------------------------------" echo "OTA-UPDATABLE DEVICES" echo "--------------------------------------------------------------" echo if exists avahi-browse; then useAvahi else echo "Avahi not installed" exit 1 fi