Presentiamo un semplice script VBS che consente di evitare di impartire diverse volte il comando nslookup
da Windows per verificare se il nome a dominio del proprio sito web venga correttamente risolto dai principali nameserver italiani e stranieri.
abbiamo pubblicato una breve guida sul funzionamento dei server DNS spiegando quando può essere utile sostituirli e come verificarne le performance.
Se si gestisce un sito web può essere utile verificare, periodicamente, che i principali server DNS dei vari provider Internet risolvano correttamente il proprio nome a dominio. E’ importante insomma controllare che all’indirizzo www.nomedelsito.it
sia associato l’indirizzo IP corretto.
Avere a disposizione uno script capace di automatizzare l’intera procedura di controllo può essere importante, anche nei casi in cui – dopo aver cambiato provider o comunque fornitore dei servizi hosting/housing – si voglia esaminare la corretta propagazione del nuovo indirizzo.
Lo script che vi proponiamo può essere utilizzato semplicemnte copiandolo all’interno di un file di testo quindi rinominando tale file con l’estensione .vbs
:
' ////// INIZIO DATI DA MODIFICARE ////////////////////////// strDominio="www.nomedelsito.xx" strIP="127.0.0.1" strDNS=array("151.99.125.1","151.99.125.2","151.99.125.3","212.216.112.112","151.99.0.100",_ "193.70.192.100","195.210.91.100","212.245.158.66",_ "8.8.8.8","8.8.4.4","208.67.222.222","208.67.220.220","198.153.192.1","198.153.194.1","156.154.70.22","156.154.71.22") ' ////// FINE DATI DA MODIFICARE //////////////////////////// strReport="" stringa="Server:" lungh_array=ubound(strDNS) Set objShell = CreateObject("WScript.Shell") For i=0 to lungh_array strCommand = "nslookup "& strDominio &" "& strDNS(i) Set objExecObject = objShell.Exec(strCommand) Do While Not objExecObject.StdOut.AtEndOfStream strResults = objExecObject.StdOut.ReadAll() Loop if instr(strResults, strIP)=0 then strReport=strReport&strDNS(i) posnomeserver=instr(strResults, stringa) if posnomeserver>0 then posnomeserver=posnomeserver+len(stringa) acapo=instr(posnomeserver,strResults,vbcrlf) nomeserver=trim(mid(strResults,posnomeserver,acapo-posnomeserver)) strReport=strReport&" ("&nomeserver&")" end if strReport=strReport&vbcrlf end if Next if strReport="" then WScript.Echo "Verificati "& lungh_array+1 &" nameservers."& vbcrlf &"Tutti i server DNS hanno risposto nel modo atteso risolvendo correttamente "& strDominio &" in "& strIP &"." else strReport="Verificati "& lungh_array+1 &" nameservers."& vbcrlf &"I seguenti server DNS hanno risposto in modo inatteso:"& vbcrlf &strReport& vbcrlf &"Il nome a dominio "& strDominio &" non è stato risolto in "& strIP &"." WScript.Echo strReport end if
Il funzionamento dello script è di immediata comprensione. Le uniche variazioni che debbono essere apportate al codice dello script consistono nella modifica dei valori delle variabili strDominio
, strIP
ed eventualmente dell’array strDNS
.
La prima deve essere inizializzata specificando il nome a dominio oggetto della verifica mentre a strIP
deve essere assegnato (sostituire 127.0.0.1
) l’IP corretto ossia l’indirizzo corretto che i nameserver dovrebbero restituire in risposta ad ogni interrogazione sul nome a dominio indicato.
L’array strDNS
è già inizializzato e, come si vede, abbiamo già provveduto ad indicare numerosi DNS pubblici di alcuni provider italiani e non. Ovviamente, è possibile estendere la lista dei nameserver o rimuovere quelli che non interessano secondo le proprie necessità.
Nel nostro caso, dopo aver correttamente impostato le prime due variabili, salvato lo script e fatto doppio clic sul file VBS, abbiamo ottenuto il seguente messaggio:
Qualora uno o più DNS non dovessero risolvere, nel modo atteso, l’indirizzo mnemonico specificato (es.: www.ilsoftware.it
), lo script VBS mostrerebbe un messaggio simile al seguente:
Il ciclo for
(riga 14) si occupa di invocare, per ciascun DNS indicato nell’array strDNS
, il comando nslookup
.
Quanto restituito dal comando nslookup
viene inserito nella variabile strResults
.
I successivi due if
(righe 22-32) si occupano, innanzi tutto di verificare se l’IP indicato nella variabile strIP
sia presente nella risposta di nslookup
(riga 22) quindi provvedono ad estrarre il nome del server DNS (righe 24-29).
Nella variabile strReport
vengono annotati gli eventuali DNS che dovessero rispondere in maniera non corretta.
Lo script VBS è ovviamente migliorabile permettendo, se lo si desidera, l’inserimento da finestra di dialogo dei valori delle prime due variabili e descrivendo il messaggio d’errore eventualmente restituito dai vari nameservers.