Hello,
Après le 10ième plantage de mon PC "passerelle" (ce qui reste toujours allumé avec TeamViewer et VNC) à cause du pilote Realtek Ethernet qui plante. J'ai mis en place une tache planifiée qui teste le réseau, reset les interface et reboot si nécessaire (c'est un softdog). Le code est ci-dessous.
Question bête, mon routeur ADSL Technicolor TG788 était plutôt fiable. La Freebox Crystal de mon voisin est plutôt plantogène (aka nécessite d'être débranchée/rebranchée).
La Livebox v4 est plutôt dans la catégorie "technicolor" ou la catégorie "crystal" ?
(J'hésite à installer un watchdog hardware qui redémarre Livebox et swicths en cas de perte de ping vers l'extérieur.)
-Simon-
Code de mon batch, but étant de ne redémarrer l'ordinateur que si le routeur ou 3 services Windows (TeamViewer, VNC, Explorer) ou 6 services internet différents réseau sont bien indisponibles :
@echo off
cls
rem **************************************************************************
rem Script spécial anti-carte-réseau-défaillante / Simon 03032019
rem **************************************************************************
rem A exécuter en tant que tâche planifiée
rem Au démarrage du système, reporter d'une heure puis toutes les 15 minutes.
rem Autorisations maximales et exécution masquée
rem **************************************************************************
rem Quand tout marche bien, le script ping le routeur et le NAS et recommencera ainsi
rem Si l'un des deux est en erreur, il ping le routeur et un service web1
rem Si l'un des deux est en erreur, il reset la couche réseau de Windows 1/2
rem Si l'un des deux est en erreur, il ping le routeur et un service web2
rem Si l'un des deux est en erreur, il ping le routeur et un service web3
rem Si l'un des deux est en erreur, il reset la couche réseau de Windows 2/2
rem Si l'un des deux est en erreur, il ping le routeur et un service web4
rem Si l'un des deux est en erreur, il ping le routeur et un service web5
rem Si l'un des deux est en erreur, il archive le fichier de log et redémarre Windows
rem Note : Ce script doit être stocké sur un lecteur local ! (à cause du reset réseau)
rem *** compteur de retentative
set retry=0
:retry
set result=*
:systématique
echo TEST Service TeamViewer
tasklist /FI "IMAGENAME eq TeamViewer_Service.exe" 2>NUL | find /I /N "TeamViewer_Service.exe">NUL
if errorlevel 1 set result=%result%/KO Teamviewer
echo TEST Service TightVNC
tasklist /FI "IMAGENAME eq tvnserver.exe" 2>NUL | find /I /N "tvnserver.exe">NUL
if errorlevel 1 set result=%result%/KO TightVNC
echo TEST explorer
tasklist /FI "IMAGENAME eq explorer.exe" 2>NUL | find /I /N "explorer.exe">NUL
if errorlevel 1 set result=%result%/KO WinExplorer
echo TEST Livebox
set ip=livebox
rem ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO Livebox
:test0
if not %retry%==0 goto :test1
echo TEST Nas
set ip=stockage.local
rem ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO Nas
:test1
if not %retry%==1 goto :test2
echo TEST ping.eu
set ip=ping.eu
rem ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO ping.eu
:test2
if not %retry%==2 goto :test3
echo TEST Qwant
set ip=www.qwant.com
rem ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO Qwant
:test3
if not %retry%==3 goto :test4
echo TEST Bing
set ip=www.bing.com
rem ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO Bing
:test4
if not %retry%==4 goto :test5
echo TEST Google
set ip=www.google.com
rem ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO Google
:test5
if not %retry%==5 goto :result
echo TEST Amazon
set ip=www.amazon.com
ping -n 1 %ip%
ping -n 1 %ip% | find "temps"
if errorlevel 1 set result=%result%/KO Amazon
:result
rem *** on logue le résultat
echo ***SoftDog*** %date% %time% Resultat: %result%
echo ***SoftDog*** %date% %time% Resultat: %result% >> C:\SoftDog.log
rem *** Si pas d'erreur, on finit immédiatement
if "%result%"=="*" goto :end
rem *** sinon ...
echo On recommence...
rem *** pause de 60 secondes (ce qui permet 5 minutes d'erreur avant un reboot)
timeout 60
set /a retry=%retry%+1
if %retry%==1 goto :netfix
if %retry%==3 goto :netfix
if %retry%==5 goto :shutdown
goto :retry
rem *** Option corrective 1 :
rem *** on redémarre le réseau
:netfix
echo Action : RESET NETWORK
echo Action : RESET NETWORK >> C:\SoftDog.log
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns
goto :retry
rem *** Option corrective 2 :
rem *** on redémarre le système
:shutdown
echo Action : RESTART
echo Action : RESTART >> C:\SoftDog.log
rem *** Renommage du log avant reboot pour l'histoire !
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
set _my_datetime=%_my_datetime:,=%
rename C:\SoftDog.log C:\SoftDog_reboot_%_my_datetime%.log
rem *** Redemarrage
shutdown /r /f /t 10
rem *** On attend le redémarrage
timeout 10
:end
rem *** pause pour débug uniquement
rem pause