2017-05-25 4 views
0

J'essaye de créer un script de chauve-souris ou de shell qui me permettra de vérifier si ma connexion plink meurt ou ne répond plus, puis de tuer le service et de le redémarrer. C'est possible? Le problème que mon ami et moi avons rencontré est que nous ne pouvons pas vérifier si le processus est mort ou non et pour l'instant notre solution est d'utiliser un timeout. c'est un peu une perte de temps car la connexion pourrait mourir et rester morte pour quiconque sait combien de temps ou il pourrait être tué même si c'est parfaitement bien.Revive le service plink après sa mort

:LOOP 
START CMD /C "title connection && plink sap" > data 
timeout /t 30 
START CMD /C "taskkill /fi "Status eq RUNNING" /fi "WindowTitle eq connection*" /im "cmd.exe && exit" 
timeout /t 5 
GOTO LOOP 
+0

Vous devez utiliser PowerShell et une bibliothèque SSH (comme SSH.NET). C'est au-delà de ce que le fichier batch est bon pour. –

Répondre

0

Nous avons trouvé une solution partielle qui résout d'avoir à tuer la tâche chaque fois que nous passons par la boucle. Il vérifie si le processus répond, il est tué et cela se fait toutes les 10 secondes

START CMD /C "title connectionSAPB1PLINK && plink sap" 
:LOOP 
timeout /t 10 
taskkill /f /fi "STATUS eq NOT RESPONDING" /fi "WindowTitle eq connectionSAPB1PLINK*" 
tasklist /fi "WindowTitle eq connectionSAPB1PLINK*" /FO "csv" | find /i "cmd.exe" > nul 2>&1 
echo "%errorlevel%" 
if "%errorlevel%" == "0" (GOTO LOOP) else (START CMD /C "title connectionSAPB1PLINK && plink sap" && tasklist /v && GOTO LOOP)