1
Votesreverse dns lookup to populate names in OMADA SDN
reverse dns lookup to populate names in OMADA SDN
just a small note for people who would like to get the omada SDN to populate names automatically based on their local DNS... here is my small script which seems to do the trick while waiting for TPlink to implement this really really basic function in their code...
it has been tested on ubuntu, running opnsense FW as DHCP server, with unboundID DNS and tplink EAP&switches.
note: you might want to audit the script and the python libary before using it in PRODUCTION....
#!/usr/bin/bash HELP=" dns2omada.sh is the most simplistic script ever meant to paliate one of dumbest laziest lack of feature of the tp-link OMADA SDN software.... it simply populate the OMADA client's name based on DNS name... using a python omada api... Assumptions: - you already have a local DNS server able to perform reverse DNS resolution per IP. - you already have omada SDN setup on the network - you should create an OMADA admin account dedicated to this process using a very long random password string without any special character - my subnet is simply from 192.168.0.1 to 192.168.0.256 so I have a simple loop, you might have to modify the script if your subnet is class B with an outer loop etc... usage: 1) install python: sudo apt install python3-pip 2) install the omada python api: pip install tplink-omada-client 3) update the parameters CHANGE_ME values in the scipt below 4) run the script manually or in cron... " # these should be self-explanatory omada_username="CHANGEME_mrpotatoe" omada_password="CHANGEME_lfdaruiRWGFD335qw324z" omada_site="CHANGEME_homesweethome" omada_url="https://CHANGEME_omada.mylocaldomain" subnet=CHANGEME_192.168.0 dns_server=CHANGEME_192.168.0.1 omadabin=/CHANGEME/bin/omada # the absolute path to the omada binarie whch gets installed with the client. if [[ $# -gt 0 ]] then echo $HELP exit 3 fi if fgrep -v grep $0 | fgrep CHANGEME >/dev/null then echo "ERROR: you forgot to change these varialbes from $0:" fgrep -v grep $0 | fgrep CHANGEME echo "$HELP" exit 4 fi $omadabin -t myomada target --url $omada_url --user $omada_username --password $omada_password --site $omada_site --set-default omadaclients=/tmp/omadaclients.$$.txt $omadabin clients > $omadaclients let ip4thfield=1 while [[ $ip4thfield -lt 256 ]] do clientname="" clientmac="" clientname=$(nslookup ${subnet}.$ip4thfield $dns_server 2>/dev/null | fgrep "=" |cut -f2 -d"=" |cut -f1 -d"."|tail -1) if [[ $clientname != "" ]] then clientmac=$(fgrep " ${subnet}.$ip4thfield " $omadaclients| cut -f1 -d" "|tail -1) if [[ $clientmac != "" ]] then echo "setting hostname for ${subnet}.$ip4thfield to $clientname for mac $clientmac " $omadabin set-client-name $clientmac $clientname else echo "skipping ${subnet}.$ip4thfield because omada does not see any client MAC for it" fi else echo "skipping ${subnet}.$ip4thfield because I cant resolve it" fi let ip4thfield=ip4thfield+1 done rm -f $omadaclients