Partage
  • Partager sur Facebook
  • Partager sur Twitter

Log de la latence de plusieurs IP simultanément

    3 septembre 2021 à 17:24:20

    Bonjour,

    Imaginons que j'ai une liste d'adresse IP dans un fichier (1 ligne = 1 IP). J'aimerais lancer un script qui me permet de lancer un ping sur chacune de ces IP et renvoyer l'output vers un fichier texte (1 fichier = 1 IP). Initialement, j'avais très peu d'IP à checker donc je me servais du script ci-dessous :

    Ping.exe -t <IP> | ForEach {"{0} - {1}" -f (Get-Date),$_} > <lastOctet>.txt

    Je précise pour les valeurs ci-dessous :

    <IP> : l'IP d'une machine

    <lastOctet> : le dernier IP de la machine

    Pour faire évoluer ce script, j'ai tenté de rajouter un foreach qui récupère chaque ligne (chaque IP) dans un fichier et exécute pour chaque ligne la commande ci-dessus. Malheureusement c'est KO.

    J'ai tenté également cette solution, en vain.. pas de logs en retour.

    foreach($line in Get-Content <list_IP_file>) {
            $lastOctet = $line.Split('.')[-1]
            Start-Job {Ping.exe -t $line | ForEach {"{0} - {1}" -f (Get-Date),$_} > $lastOctet.txt}
        }



    Merci d'avance pour votre aide ! :)

    • Partager sur Facebook
    • Partager sur Twitter
      3 septembre 2021 à 17:48:31

      D'après la doc (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/start-job?view=powershell-7.1 ), j'aurai tendance à dire qu'il faut passer les valeurs de $line et $lastOctet via le paramètre -ArgumentList

      foreach($line in Get-Content <list_IP_file>) {
              $lastOctet = $line.Split('.')[-1]
              Start-Job {Ping.exe -t $line | ForEach {"{0} - {1}" -f (Get-Date),$_} > $lastOctet.txt} -ArgumentList $line,$lastOctet
          }



      • Partager sur Facebook
      • Partager sur Twitter
        3 septembre 2021 à 18:24:35

        umfred a écrit:

        D'après la doc (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/start-job?view=powershell-7.1 ), j'aurai tendance à dire qu'il faut passer les valeurs de $line et $lastOctet via le paramètre -ArgumentList

        foreach($line in Get-Content <list_IP_file>) {
                $lastOctet = $line.Split('.')[-1]
                Start-Job {Ping.exe -t $line | ForEach {"{0} - {1}" -f (Get-Date),$_} > $lastOctet.txt} -ArgumentList $line,$lastOctet
            }


        Merci pour la réponse :D

        Maintenant la variable $ip reste vide pour chaque job.



        • Partager sur Facebook
        • Partager sur Twitter
          3 septembre 2021 à 18:33:50

          où ça $ip ? :euh:

          il essaie de remplacer peut-être aussi $_ , du coup, rajouter un champ vide entre les 2 variables ? => -ArgumentList $line,,$lastOctet

          • Partager sur Facebook
          • Partager sur Twitter
            3 septembre 2021 à 18:47:38

            umfred a écrit:

            où ça $ip ? :euh:

            il essaie de remplacer peut-être aussi $_ , du coup, rajouter un champ vide entre les 2 variables ? => -ArgumentList $line,,$lastOctet


            Malheureusement, il n'aime pas ça.

            J'ai testé ma solution sans Start-Job avec deux @IP dans le fichier de la liste d'IP avec 3 ping pour chaque IP et la solution fonctionne bien. Seulement, les ping se font les uns après les autres.. pas moyen de les faire en parallèle.

            foreach($ip in Get-Content "<list_IP_file>") {
                    $lastOctet = $ip.Split('.')[-1]
                    Ping.exe -n 3 $ip | ForEach {"{0} - {1}" -f (Get-Date),$_} >> <lastOctet.txt"
                }


            PS : Pardon pas fais attention pour le "$ip où ça ?". Entre temps j'ai changé le nom de la variable.

            -
            Edité par Tpl_ 3 septembre 2021 à 19:08:00

            • Partager sur Facebook
            • Partager sur Twitter
              5 septembre 2021 à 21:02:05

              Petite mise à jour. N'étant pas très à l'aise avec PowerShell, j'ai essayé de faire le script en bash. Quelqu'un m'a également fourni un script en PHP qui semble bien parti. Je partage le code dès que c'est opérationnel, cela peut toujours servir.
              • Partager sur Facebook
              • Partager sur Twitter

              Log de la latence de plusieurs IP simultanément

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown