WatchDog: tenere d’occhio e resettare (quando serve) la propria scheda di rete

| |

Che nulla ha a che fare con il titolo realizzato da Ubisoft ma che comunque “fa brodo“. Lo scenario è sicuramente fuori dal normale ma non improbabile da trovare in giro. Una postazione collegata in WiFi un po’ distante dal router perde di tanto in tanto la connessione (va in hang o addirittura non si ricollega in automatico nonostante le impostazioni corrette in Windows), le cause sono disparate (no, non c’entra la copertura di rete), basta semplicemente riavviare la scheda WiFi per veder ripartire tutto. Sapete che è possibile farlo tramite batch? Il funzionamento è estremamente semplice, qui di seguito il passo-passo.

WatchDog: tenere d'occhio e resettare (quando serve) la propria connessione 1

Prima di partire occorre conoscere il nome assegnato alla propria scheda di rete, quello che tipicamente è impostato a “Connessione alla rete locale (LAN)” in Windows e che nell’immagine qui di seguito io ho rinominato per comodità “eth0” (collegamento con cavo) e “WiFi0” (collegamento wireless):

WatchDog: tenere d'occhio e resettare (quando serve) la propria connessione 2

Lo script pensato e realizzato non fa altro che appoggiarsi ad una delle interfacce di rete da voi stabilita, lanciare un semplice ping (ho scelto il DNS primario di Google viste le rapidissime risposte che questo fornisce) e, nel caso in cui la destinazione non risponda, disattivare e riattivare dopo qualche secondo la scheda di rete, il tutto tenendo traccia delle operazioni eseguite in un piccolo file di log che potrete poi in seguito andare a consultare. Quest’ultimo viene sovrascritto ogni volta che lo script parte così da non crescere a dismisura (considerando che nel mio caso lo script viene eseguito una volta ogni 2 minuti!).

Inutile dire che se la destinazione è raggiungibile lo script lascia tutto com’è e niente verrà riavviato.

Tradotto in codice batch, questo è il risultato (in coda vi spiego qualche dettaglio in più):

@echo off
cls
set INTERFACCIA="wifi0"
set TIMEOUT=10
set IP=8.8.8.8
set LOG="blackhole.log"

echo Arf Arf!

echo %DATE% %TIME:~0,8%: Verifica connessione
echo Interfacce registrate sulla macchina
netsh interface show interface

echo %DATE% %TIME:~0,8%: Verifica connessione > %LOG%
echo Interfacce registrate sulla macchina >> %LOG%
netsh interface show interface >> %LOG%

:Verify
REM Tentativo di connessione a Google (IP), in caso di errore riavvio la scheda di rete.
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% EQU 0 goto :OutOfThere

:rebootConnection
echo %DATE% %TIME:~0,8%: Connessione fallita. Tento il riavvio della scheda %INTERFACCIA% ..
echo %DATE% %TIME:~0,8%: Connessione fallita. Tento il riavvio della scheda %INTERFACCIA% .. >> %LOG%
netsh interface set interface %INTERFACCIA% disable
netsh interface set interface %INTERFACCIA% enable

echo %DATE% %TIME:~0,8%~: Ritento connessione, attendere ..
echo %DATE% %TIME:~0,8%: Ritento connessione, attendere .. >> %LOG%
goto Verify

:OutOfThere
echo;
echo %DATE% %TIME:~0,8%: Ultima connessione riuscita.
echo %DATE% %TIME:~0,8%: Ultima connessione riuscita. >> %LOG%
echo; >> %LOG%

:VerifyTViewer
echo;
sc query "TeamViewer" | findstr /I "RUNNING"
if %errorlevel% NEQ 0 sc start "TeamViewer"

Vi prego di stendere un velo di comprensione sull’ “Arf Arf” che fa molto cagnolino all’ingresso, ogni tanto gli porto anche il biscottino per ringraziarlo. Ora però diamo un’occhiata a quello che c’è da sapere:

  • INTERFACCIA: è la scheda di rete da riavviare nel caso in cui il ping non vada a buon fine, occhio al nome, dovete riportare quello esatto, tenerlo tra le virgolette e copiare eventuali parentesi tonde e simili.
  • TIMEOUT: il numero di ping da tentare prima di dichiarare sconfitta e riavviare la scheda di rete, nel mio caso (lo stesso che consiglio a voi) è impostato su 10.
  • IP: l’IP di destinazione da pingare. Come già detto qualche riga più sopra ho voluto utilizzare il DNS primario di Google, voi potete cambiarlo e scegliere altro, in base a preferenza / esigenza.
  • LOG: il file dove andare a scrivere ciò che accade.

Il resto dello script non va toccato, va già bene così. Bisognerà solo fare in modo che questo si attivi in automatico, argomento del prossimo paragrafo.

Al termine dello script c’è un’ulteriore query per verificare che TeamViewer sia attivato perché è lo strumento di controllo remoto installato sul PC. Nel caso in cui non lo fosse, lo script provvederà all’avvio (o almeno ci proverà, salvo errori del programma che sono da analizzare in un secondo momento).

Avvio automatico dello script

Passaggio che possiamo portare a termine tramite il solito Scheduler di Windows. Start / Esegui / “control schedtasks” (seguito da invio, ndr) ed eccoci in console pronti per creare una nuova operazione “di base”. Io ho programmato l’avvio di un programma (il file batch, ovviamente) ogni 2 minuti, ogni giorno, vita natural durante. Il tutto eseguito indipendentemente dalla connessione dell’utente al sistema ma soprattutto con privilegi elevati (quindi amministrativi, con password salvata nello scheduler, altrimenti non potrà mai partire correttamente):

WatchDog: tenere d'occhio e resettare (quando serve) la propria connessione 3

WatchDog: tenere d'occhio e resettare (quando serve) la propria connessione 4

WatchDog: tenere d'occhio e resettare (quando serve) la propria connessione 5

Salvo errori lo script farà il suo lavoro, la postazione sarà in grado autonomamente di riavviare la sua connessione verso il router così da rendersi raggiungibile anche in caso di problemi (risolvibili in questa maniera, ovviamente, tutto ciò esula manco a dirlo dal fatto che la connettività non dia problema alcuno verso internet o il router non faccia scherzi).

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Inline Feedbacks
View all comments