Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1520 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Boucle ping dans un batch pour détecter une déconnexion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boucle ping dans un batch pour détecter une déconnexion

n°1950127
ollvin
Posté le 14-12-2009 à 14:31:45  profilanswer
 

Bonjour à tous,
D'abord, je précise que je n'y connais rien en DOS donc soyez indulgents. :D  
J'essaie simplement d'améliorer un batch qui lance l'enregistrement de ma TV par ADSL avec le logiciel VLC.
Voici le script (très compliqué) :

Code :
  1. vlc rtp://@232.0.1.1:8200 :sout=#duplicate{dst=std{access=file,mux=ts,dst="E:\Enregistrements_tv\test.ts"}}


 
Mon problème c'est que l'enregistrement ne redémarre pas en cas de coupure de la connexion, même très courte, et comme les petites coupures sont légions chez moi, la plupart de mes enregistrements sont inutilisables.
Je me demandais s'il n'y avait pas moyen avec un simple test ping d'arrêter le logiciel dès que la connexion coupe, puis de le relancer de la même manière dès qu'elle se rétablit. (Il me semble qu'il faudrait d'ailleurs faire une autre batch en parallèle parce que celui-ci semble s'arrêter du fait que vlc est toujours en marche.)
J'ai vu qu'il y avait la commande "ping -t xxx.xxx.xxx.xxx" qui teste indéfiniment mais je ne sais pas comment la stopper dès qu'on obtient un résultat négatif pour lancer la suite.
Sinon, il y a peut-être tout simplement un petit utilitaire réseau qui pourrait lancer un programme en fonction d'un test de connexion, mais je n'en ai pas trouvé. :??:  
 
Merci d'avance.

mood
Publicité
Posté le 14-12-2009 à 14:31:45  profilanswer
 

n°1950141
olivthill
Posté le 14-12-2009 à 15:03:18  profilanswer
 

Il y a par exemple VBS (en standard sur tous les PC depuis Win95), avec un petit script du genre:

Set objShell = WScript.CreateObject("WScript.Shell" )
Set objExecObject = objShell.Exec("cmd /c ping -n 3 -w 1000 232.0.1.1:8200" )
Do While Not objExecObject.StdOut.AtEndOfStream
    strText = objExecObject.StdOut.ReadLine()
    If Instr(strText, "Reply" ) > 0 Then
        Wscript.Echo "Reply received."
        objShell.Run("vlc rtp://@232.0.1.1:8200 :sout=#duplicate{dst=std{access=file,mux=ts,dst="E:\Enregistrements_tv\test.ts"}}" ),1,True
        Exit Do
    End If
Loop

n°1950146
pataluc
Posté le 14-12-2009 à 15:18:36  profilanswer
 

t'as pas plutôt une option coté vlc pour lui dire de raccrocher le flux? (ne serait ce que le tampon)

n°1950444
ollvin
Posté le 15-12-2009 à 11:02:01  profilanswer
 

Citation :

 Il y a par exemple VBS (en standard sur tous les PC depuis Win95), avec un petit script du genre:
 
Set objShell = WScript.CreateObject("WScript.Shell" )
Set objExecObject = objShell.Exec("cmd /c ping -n 3 -w 1000 232.0.1.1:8200" )
Do While Not objExecObject.StdOut.AtEndOfStream
    strText = objExecObject.StdOut.ReadLine()
    If Instr(strText, "Reply" ) > 0 Then
        Wscript.Echo "Reply received."
        objShell.Run("vlc rtp://@232.0.1.1:8200 :sout=#duplicate{dst=std{access=file,mux=ts,dst="E:\Enregistrements_tv\test.ts"}}" ),1,True
        Exit Do
    End If
Loop


 
Ca a l'air intéressant, mais j'ai un problème avec le ping : j'avais mis le .vbs dans mon dossier vlc et quand je lance un ping depuis ailleurs que c:\, il me fait une boucle que je suis obligé d'arrêter avec ctrl+c. Comme je n'ai pas réussi à faire une deuxième ligne dans la fonction objShell.Exec() pour changer de répertoire :sweat: , j'ai essayé de placer le .vbs à la racine de c:\ et là, il m'ouvre simplement l'invite de commande sans rien faire.  :??: (J'ai aussi échappé les " dans le objShell.Run mais pour l'instant, je n'en suis pas là...)
 

Citation :

t'as pas plutôt une option coté vlc pour lui dire de raccrocher le flux? (ne serait ce que le tampon)


Il semblerait que non... D'autres personnes ont posté à ce sujet sur les forum VLC et si j'ai bien compris le problème viendrait du fait que VLC ne détecte pas la rupture du flux, il reste planté là à rien faire. Mais bon, j'ai tout de même posté un message à ce sujet, on va bien voir.
Quand à la mémoire tampon, je ne sais pas très bien comment ça marche. Ca affecte une chaîne diffusée en continu ?


Message édité par ollvin le 15-12-2009 à 11:04:07

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Boucle ping dans un batch pour détecter une déconnexion

 

Sujets relatifs
Detecter s'il ya un changement dans l'ecranPb de boucle While avec 2 bases
[Résolu - PHP] Incrémenter une variable par autre chose que +1Problème de lancement de batch
Perte de connexion avec la base MySQLURGENT : problème shell windows boucle for
appel d'une fonction dans une boucle ne se réalise qu'une foisbatch sftp pour recuperer fichier et envoi mail
[Batch]Utilisation PsexecBatch qui crée un .bat en fontion de l'enplacement d'une clée usb
Plus de sujets relatifs à : Boucle ping dans un batch pour détecter une déconnexion


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR