programmer des PING

programmer des PING - Shell/Batch - Programmation

Marsh Posté le 08-02-2019 à 15:26:23    

Bonjour,
je cherche à créer un fichier/tableau de suivi pour des appareils sur mon réseau.
ils ont tous une IP fixe
aujourd'hui j'ai fait ceci

Code :
  1. @echo off
  2. echo test > "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  3. ping.exe 10.33.243.160 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  4. ping.exe 10.33.242.192 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  5. ping.exe 10.33.242.186 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  6. ping.exe 10.33.243.161 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  7. ping.exe 10.33.242.188 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  8. ping.exe 10.33.242.223 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  9. ping.exe 10.33.242.220 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  10. ping.exe 10.33.243.187 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  11. pause


j'ai un fichier qui s'écrase à chaque lancement du batch...
j'aimerais faire toujours la même chose mais en conservant plusieurs jours les infos
par ex dans un fichier "excel"
avec en colonne : IP/DATE/Heure/vu ou pas vu
et si possible tout automatiser....
 
je sais pas si je dois continuer en Batch ou faire du VBS ou Powershell (que je ne connais pas)...

Reply

Marsh Posté le 08-02-2019 à 15:26:23   

Reply

Marsh Posté le 08-02-2019 à 16:15:10    

j'ai recuperer un bout de code
pour du vbs mais cela plante
et idem je sais pas faire...

Code :
  1. 'Déclaration des Constantes Const ForReading 1, ForWriting 2, ForAppending = 8
  2. 'Déclaration des Objets
  3. Dim fso, srcFile, Ratio, Avance, strCheck, strMat0
  4. Err = 0
  5. Avance = 0
  6. 'Déclaration des Variables
  7. strFile = "AdStations.txt"
  8. strLog = "VerifStation.log"
  9. strTemp = "FileTemp.txt"
  10. strComputer = "."
  11. strCheck = 0
  12. 'Définition des objets
  13. Set fso = CreateObject("Scripting.FileSystemObject" )
  14. Set Shell = WScript.CreateObject("WScript.Shell" )
  15. 'Vérification que le fichier listing des Stations existe bien
  16. If Not (fso.FileExists(strFile)) Then
  17. MsgBox "Le fichier " & strFile & " n'existe pas!",4144, "Erreur"
  18. Wscript.quit
  19. End if
  20. Set srcFile = fso.OpenTextFile(strFile, ForReading, False)
  21. Set txtLog = fso.OpenTextFile(strLog, ForWriting, True)
  22. txtLog.WriteLine "================================================================================="
  23. txtLog.WriteLine "Vérification des Stations démarré le: " & Now()
  24. txtLog.WriteLine "Fichier de référence Station : " & strFile
  25. txtLog.WriteLine "-----------------------------------------------------------------------"
  26. Do While srcFile.AtEndOfStream <> True
  27. strMateriel = "Station"
  28. strLine = srcFile.ReadLine
  29. Shell.run "cmd /c ping -n 2 -w 20000 " & strLine & " > " & strTemp, 0, True
  30. strReponse = "Pas de réponse de la " & strMateriel & " -- ##"
  31. Analyz() If strCheck 1 Then strReponse strMateriel & " fonctionnelle"
  32. txtLog.WriteLine strLine & vbTab & "-" & vbTab & "-----> " & strReponse
  33. Loop
  34. srcFile.Close
  35. txtLog.WriteLine "-----------------------------------------------------------------------"
  36. txtLog.WriteLine "Vérification des Stations terminée le: " & Now()
  37. txtLog.WriteLine "================================================================================="
  38. txtLog.Close
  39. 'Consultation possible des Log
  40. Journal= MsgBox ("Vérification du système terminée." & vbcrlf & vbcrlf & "Consultation du journal ?",4132 ,"Rapport" )
  41. If Journal = 6 Then
  42. Return = Shell.Run ("%windir%\notepad.exe " & strLog, 3, TRUE)
  43. End if
  44. Set fso = Nothing
  45. Set Shell = Nothing
  46. Set txtLog= Nothing
  47. Set fileTemp = Nothing
  48. strComputer = ""
  49. strCheck = ""
  50. strFile = ""
  51. strReponse = ""
  52. strLog = ""
  53. strTemp = ""
  54. '============================================================'
  55. ' FONCTIONS '
  56. '============================================================'
  57. Function Analyz()
  58. set filTemp = fso.OpenTextFile(strTemp, ForReading, True)
  59. strCheck = 0
  60. Do Until filTemp.AtEndOfStream = True
  61. If InStr(filTemp.ReadLine, "octets=" ) > 0 Then
  62. strCheck = 1
  63. Exit Do
  64. End If
  65. Loop
  66. filTemp.Close
  67. Set DelFile = fso.GetFile(strTemp)
  68. DelFile.Delete
  69. End Function

Reply

Marsh Posté le 08-02-2019 à 18:55:04    

aculy a écrit :

j'ai un fichier qui s'écrase à chaque lancement du batch...
j'aimerais faire toujours la même chose mais en conservant plusieurs jours les infos

Le plus simple serait de changer le premier ">" en ">>" voire de rajouter la date du jour dans le fichier (je sais pas quelle est la commande exacte, j'ai plus Windows :o ).

Reply

Marsh Posté le 09-02-2019 à 15:39:43    

%date% il me semble.

Reply

Marsh Posté le 10-02-2019 à 12:50:37    

rat de combat a écrit :

 j'ai plus Windows

.
c'est possible ???
 
 :pt1cable:  

Reply

Marsh Posté le 10-02-2019 à 12:54:37    


oui cela fonctionne en modifiant le code j'ai aussi mis l'heure du coup
 

Code :
  1. @echo off
  2. echo %date% >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  3. echo %time% >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  4. ping.exe 10.33.243.160 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  5. ping.exe 10.33.242.192 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  6. ping.exe 10.33.242.186 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  7. ping.exe 10.33.243.161 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  8. ping.exe 10.33.242.188 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  9. ping.exe 10.33.242.223 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  10. ping.exe 10.33.242.220 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  11. ping.exe 10.33.243.187 -n 1 >> "R:\06 - INFORMATIQUE\Interne SI\SI\IP_test.txt"
  12. pause

Reply

Marsh Posté le 10-02-2019 à 14:09:00    

aculy a écrit :

.
c'est possible ???
 
 :pt1cable:

Tu n'as jamais entendu parler de Linux??

Reply

Marsh Posté le 12-02-2019 à 15:59:13    

j'ai baigné dans le monde microsoft depuis ma naissance....
surtout depuis win 3.11..
;-p

Reply

Marsh Posté le 12-02-2019 à 16:00:12    

sinon sérieusement,
est ce que ce que je fais en batch peut se faire en powershell ?
car de là je pense que je pourrais extraire plus d'infos.
ex de ce que je cherche à faire
ping une liste d'adresse ip (fournit via un fichier texte par exemple que je peux modifier à volonté)
ressortir l'infos ping ok ou ko dans un simple fichier texte
exemple

  • 192.168.0.1 OK
  • 192.168.0.100 OK
  • 192.168.0.122 KO
  • 192.168.0.150 OK

le tout précédé de la date et l'heure.
 
le tout me permettant à la fin de créer mon fichier Excel
avec en tète de colonne
DATE/HEURE/IP/Statut


Message édité par aculy le 12-02-2019 à 16:05:36
Reply

Marsh Posté le 03-05-2019 à 17:39:59    

j'ai découpé en 2....
un batch
 

Code :
  1. @echo off
  2. echo ---------------------------------------------- >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  3. echo. >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  4. echo %date% >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  5. echo %time% >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  6. ping.exe 10.33.243.160 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  7. ping.exe 10.33.242.192 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  8. ping.exe 10.33.242.186 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  9. ping.exe 10.33.243.161 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  10. ping.exe 10.33.242.188 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  11. ping.exe 10.33.242.223 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  12. ping.exe 10.33.242.220 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"
  13. ping.exe 10.33.243.187 -n 1 >> "R:\06 - INFORMATIQUE\G - PROJETS\Ping\IP_test.csv"


 
et du VBS qui lance le batch
 

Code :
  1. Option Explicit
  2. Dim WSHShell, Commande
  3. Set WSHShell = CreateObject("WScript.Shell" )
  4. Commande = chr(34) + "R:\06 - INFORMATIQUE\G - PROJETS\Ping\ping.bat" + chr(34)
  5. Do While true
  6. WSHShell.Run Commande
  7. Wscript.sleep 30000
  8. loop
  9. ' Set WSHShell = Nothing


 
cela fait a peut pres ce que je veux
MAIS
(car y a toujours des mais....)
le script lorsqu'il lance le batch ouvre une fenetre demandant à cliquer sur "executer" à chaque fois...
est ce qu'il n'y aurait pas moyen de supprimer cette confirmation à chaque lancement?
que je puisse faire un truc full automatique...

Reply

Marsh Posté le 03-05-2019 à 17:39:59   

Reply

Marsh Posté le 05-05-2019 à 09:50:47    

C'est quoi l'intérêt de passer par du VBS pour la partie exécution :??: Pourquoi tu passes pas par le planificateur de tâches de Windows qui va lancer ton bat toutes les 30 secondes ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-05-2019 à 19:55:22    

je crois que j'ai rarement un truc aussi inutile :/

Reply

Marsh Posté le 08-05-2019 à 22:59:56    

C'est pas comme si des outils de supervision n'existaient pas :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-05-2019 à 09:58:10    

Merci pour vos aides
j'ai réussi à faire ce que je voulais en C#

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net.NetworkInformation;
  4. using System.Linq;
  5. using System.Text;
  6. namespace Ping_RF
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             List<string> adresseIP = new List<string>(); //créer liste
  13.             string[] lines = System.IO.File.ReadAllLines(@"C:\Users\XXXXX\Documents\Ping\IP.txt" ); //chemin du fichier IP.txt
  14.             foreach (string line in lines) // remplir la liste
  15.             {
  16.                 adresseIP.Add(line);
  17.             }
  18.             foreach (string iplist in adresseIP)// afficher la liste
  19.             {
  20.                 string fichier = @"C:\Users\XXXXX\Documents\Ping\resultat.csv"; // chemin du fichier resultat.csv
  21.                 Ping pingSender = new Ping();
  22.                 PingOptions options = new PingOptions();
  23.                 options.DontFragment = true;
  24.                
  25.                 string data = new string('a', 32);
  26.                
  27.                 byte[] buffer = Encoding.ASCII.GetBytes(data);
  28.                
  29.                 int timeout = 120;
  30.                
  31.                 PingReply reply = pingSender.Send(iplist, timeout, buffer, options); // Ping des ip de la liste
  32.                 if (reply.Status == IPStatus.Success) // Ecrire le resultat dans un fichier
  33.                     {
  34.                         System.IO.File.AppendAllText(fichier, "Ping OK;" + iplist + ";" + DateTime.Now.ToString("dd/MM/yyyy HH:mm" ) + "\n" );
  35.                     }
  36.                 else
  37.                     {
  38.                         System.IO.File.AppendAllText(fichier, "Ping KO;" + iplist + ";" + DateTime.Now.ToString("dd/MM/yyyy HH:mm" ) + "\n" );
  39.                     }
  40.             }
  41.         }
  42.     }
  43. }


 
surement pas beau et optimisé mais c'est ma premiere appli C#
j'ai potassé internet et lu des cours pour faire ce petit outils
qui me convient
et fait tout ce dont j'ai besoin

Message cité 1 fois
Message édité par aculy le 17-05-2019 à 10:00:22
Reply

Marsh Posté le 18-05-2019 à 15:34:56    

aculy a écrit :

surement pas beau et optimisé mais c'est ma premiere appli C#
j'ai potassé internet et lu des cours pour faire ce petit outils
qui me convient
et fait tout ce dont j'ai besoin

Et c'est ça qui compte finalement. :o Bravo, tu as insisté et réussi à régler ton problème.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed