Autore: Fabio Di Matteo
Ultima revisione: 31/03/2020 - 17:37
Aggiorna l'ip pubblico ogni 5 minuti, solo se è cambiato. Modificare : “nomeutente:password”, miohost.it (eventualmente anche https://api.ipify.org/?format=raw ) secondo le nostre esigenze.
#!/usr/bin/env python3 import time import urllib3 currentIP='' def getPublicIpRaw(): url = "https://api.ipify.org/?format=raw" http = urllib3.PoolManager() r = http.request('GET', url) return r.data def update(): global currentIP fmlIP=getPublicIpRaw() if (currentIP!=fmlIP): http = urllib3.PoolManager() headers = urllib3.util.make_headers(basic_auth='nomeutente:password') r = http.request('GET', 'http://update.dyndns.it/nic/update?hostname=miohost.it',headers=headers) currentIP=fmlIP print(str(r.data)) else: print("Stesso ip pubblico. Non aggiorno.") while(True): update() time.sleep(60*5)
#!/usr/bin/env python3 import time,os,configparser,sys import urllib3 currentIP='' urlUpdate='' user='' password='' hostname='' def getPrefs(): global urlUpdate global user global password global hostname if sys.platform == 'linux': try: iniFile=os.path.join('/etc/pobDNSupdate/prefs.conf') config = configparser.ConfigParser() config.read(iniFile) urlUpdate=config['DEFAULT']['urlUpdate'] user=config['DEFAULT']['user'] password=config['DEFAULT']['password'] hostname=config['DEFAULT']['hostname'] return True except Exception as e: print (e.message) return False if sys.platform=="win32": try: if getattr(sys, 'frozen', False): # frozen iniFile= os.path.join(os.path.dirname(sys.executable),"prefs.conf") else: # unfrozen iniFile=os.path.join(os.path.dirname(os.path.realpath(__file__)),"prefs.conf") config = configparser.ConfigParser() config.read(iniFile) urlUpdate=config['DEFAULT']['urlUpdate'] user=config['DEFAULT']['user'] password=config['DEFAULT']['password'] hostname=config['DEFAULT']['hostname'] return True except Exception as e: print (e.message) return False if sys.platform=="darwin": try: iniFile=os.path.join('/etc/pobDNSupdate/prefs.conf') config = configparser.ConfigParser() config.read(iniFile) urlUpdate=config['DEFAULT']['urlUpdate'] user=config['DEFAULT']['user'] password=config['DEFAULT']['password'] hostname=config['DEFAULT']['hostname'] return True except Exception as e: print (e.message) return False def getPublicIpRaw(): url = "https://api.ipify.org/?format=raw" http = urllib3.PoolManager() r = http.request('GET', url) return r.data def update(): global urlUpdate global user global password global hostname if (getPrefs() == True): global currentIP fmlIP=getPublicIpRaw() if (currentIP!=fmlIP): http = urllib3.PoolManager() headers = urllib3.util.make_headers(basic_auth=user+':'+password) r = http.request('GET', urlUpdate + hostname ,headers=headers) currentIP=fmlIP print(str(r.data)) else: print("Nothing to update.") while(True): update() time.sleep(60*5)
prefs.conf
[DEFAULT] urlUpdate=http://update.dyndns.it/nic/update?hostname= user=utente password=password hostname=miohost.it