====== Uno script per aggiornare l'ip del servizio Dyndns.it ======
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)
====== Versione con file di configurazione ======
#!/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