TL;DR: I am looking for a script or a cron job, which will periodically run on a linux host (fedora on raspberry pi) which will check if a port forwarding rule still exists in the router and add it if it isn't. The aim is to always have access to the raspberry pi linux host via SSH, VNC and the transmission web interface, from any machine on the internet outside my home network. The setup is given below:
Beetel 440Tx1 ADSL2 router+modem+wifi.
Router is connected to the internet (ISP Broadband) and has a dynamic external IP. It provides a private home network to my computers with internal IPs 192.168.x.y acting as a DHCP too.
A raspberry pi ARM host with Fedora Linux, running all the time with ssh, vnc, transmission-daemon servers started at boot time. It also has the no-ip.com dyndns free DUC (dynamic update client) which routinely checks the external IP and binds it to host string. So I can always find my router's external IP by resolving my dyndns string like myrouter.no-ip.org. The pi has a static internal IP like 192.168.1.z.
Have to login to router using GUI/browser with factory credentials only if connected to that network either through ethernet cable or password protected wi-fi
I setup the rule by logging in to forward any traffic at ports 22, 5900, 9091 at the external IP to the respective listener programs (sshd, vncserver, transmission-daemon) on the pi at 192.168.1.z.
This router loses the above port forwarding rule when it (the router) is restarted, or even if there is a spike in electric power and the UPS has to momentarily step in, and usually gets a different external IP from my ISP dynamically.
A script or cron job that can run on my fedora linux pi that can login to my router and periodically poll for the existence of that port forwarding rule and create it if it is missing. Help appreciated.