IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Ping liste serveurs rapport HTML [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Ping liste serveurs rapport HTML
    Bonjour à tous et à toutes,

    Je cherche à effectuer un rapport de ping au format HTML à partir d'une liste de serveurs.

    J'ai un peut de mal à faire quelque chose de simple, exemple un simple tableau avec en rouge les serveurs Offline.

    Pour le moment j'arrive a obtenir le résultat pour un serveur seulement je ne sais pas comment faire pour obtenir le résultat avec une boucle style "foreach"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # Variables de travail
    $srv = "PC_Name"
    $html = "C:\Rapport\Rapport.html"
    
    # En-tête HTML
    $head = @"
    <Title>Ping Serveurs</Title>
    <style>
    body { background-color:#FFFFFF;
           font-family:Tahoma;
           font-size:12pt; }
    td, th { border:1px solid black; 
             border-collapse:collapse; }
    th { color:white;
         background-color:black; }
    table, tr, td, th { padding: 2px; margin: 0px }
    tr:nth-child(odd) {background-color: lightgray}
    table { width:95%;margin-left:5px; margin-bottom:20px;}
    </style>
    <br>
    <H1>Ping Serveurs</H1>
    "@
    
    #Ping du serveur
    $ping = new-object System.Net.Networkinformation.Ping 
    $data = $ping.send("$srv") | select Address,Status
    
    # Fichier de sortie au format HTML
    $data | ConvertTo-Html -Head $head | Out-File $html
    Car j'ai trouver plusieurs script sur internet mais je ne les comprends pas du coup aucun intérêt..

    Merci par avance,
    Cordialement,

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    salut PierreG16

    pour commencer, le top serait que tu lise quelques tuto voir livre sur PowerShell

    il te faire une boucle sur le ping et peut etre sur le convertto-html

    pour le ping seulement ça peut donner ceci : (je n'ai pas mis tous le code)
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $listesrv = "PC_Name1", "PC_Name2", "PC_Name3"
     
    $ping = new-object System.Net.NetworkInformation.Ping
    $data = @()
    #Ping des serveurs
    foreach ($srv in $listesrv) {
        $data += $ping.send("$srv") | select @{n="nom";e={$srv}}, Address,Status
     
        }
    $ping.Dispose()
     
    # Fichier de sortie au format HTML
    $data | ConvertTo-Html -Head $head | Out-File $html

    si tu veux mettre des couleurs ça va etre plus difficile
    de suite je n'est pas la solution mais je regarde ce que je trouve !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Merci beaucoup pour ton aide, je vais lire attentivement le lien qui tu as mis.

    j'ai fais le test avec le code que tu as mis, j'ai deux petite questions a quoi sert dans le cas présent la ligne :
    Dans mon tableau, quand les serveurs son joignable je n'ai pas de problème, par contre quand les serveurs ne le sont pas en "Adress" j'ai l'ip du serveur sur lequel j'exécute mon powershell

    Exemple ici le Serveur sur le quelle j'exécute mon Powershell est le SrvPowershell avec l'ip :126.1.1.50

    listes des Serveurs
    Srv1 126.1.1.10
    Srv2 126.1.1.20
    SrvPowershell(Serveur d'exécution) 126.1.1.50

    Résultat du rapport html
    nom Adress Status
    Srv1 126.1.1.10 Success
    Srv2 126.1.1.50 DestinationHostUnreachable

    Merci par avance,

    Cordialement,

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    alors dispose sert a libéré (rendre a os/powershell) la mémoire pris par l'objet (le new-object)

    j'avais rajouter la colonne nom pour compensé certain problème avec l'affichage de l'adresse (par exemple pour des nom de serveur inexistant ne renvoie pas d'IP)
    mais je t'avoue que ton résultat me laisse perplexe
    il semble que tu est modifier quelque chose dans le select

    peut tu me montrer cette partie de code pour que je comprenne ?!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    D'accord, je comprend mieux

    voici mon code powershell complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    # Variables de travail
    $listsrv = Get-Content -path "C:\rapport\Srv.txt"
    $html = "C:\rapport\rapport.html"
    
    #####################################################################################################
    # En-tête HTML
    $head = @"
    <Title>Caisse d'Epargne - Ping Serveurs VMWare</Title>
    <style>
    body { background-color:#FFFFFF;
    font-family:Tahoma;
    font-size:12pt; }
    td, th { border:1px solid black;
    border-collapse:collapse; }
    th { color:white;
    background-color:black; }
    table, tr, td, th { padding: 2px; margin: 0px }
    table { width:95%;margin-left:5px; margin-bottom:20px;}
    </style>
    <br>
    <img src="http://zupimages.net/viewer.php?id=18/09/6bp1.png" align="middle" alt="LogoF">
    "@
    #####################################################################################################
    
    #Ping des serveurs
    $ping = new-object System.Net.Networkinformation.Ping
    $data = @()
    foreach ($srv in $listsrv ) { 
        $data += $ping.send($srv) | select @{n="nom";e={$srv}},Address,Status
    }
     $ping.Dispose()
    
    # Fichier de sortie au format HTML
    $data | ConvertTo-Html -Head $head -PostContent "<h6>Créé le $(Get-Date)</h6>"| Out-File $html
    
    
    #####################################################################################################
    #Paramètre d'envoie de mail
    
    #Encodage UTF8
    $encodingMail = [System.Text.Encoding]::UTF8 
    #Destinataire de l'email
    $To = "test@*****"
    #L’émetteur de l'email
    $From  = "Rapport<noreply@ServeurPowershell>"
    #Le Sujet de l'email
    $Subject = "Ping des Serveurs VMware"
    #Le serveur SMTP (ex : votre serveur Exchange)
    $SmtpServer = "SrvMail"
    #Le corps de votre message
    $body = Get-Content "$html" -Raw
    #Commande d'envoi
    Send-MailMessage -to $to -From $from -Subject $Subject -SmtpServer $SmtpServer -BodyAsHtml $body -Encoding $encodingMail
    #####################################################################################################

    ps: Question bête mais comment fait-on pour rendre le texte de code au format Powershell ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    ps: Question bête mais comment fait-on pour rendre le texte de code au format Powershell ?
    dans la balise code tu rajoute =PowerShell : "CODE=PowerShell]$listsrv=...[/CODE"

    pour ton code je vois pas d'où viens le problème

    sur mes tests j'ai pas ce résultat !

    sur l'affichage de la variable $data sur la console tu a bien les bonnes infos ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Désolé du temps de réponse j'étais en congé.

    Quand je fais un
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Write-Host $data

    j'ai bien la même chose que dans le rapport qui est envoyé par mail.

    exemple :

    @{nom=Srv1; Address=126.168.1.2; Status=Success}
    @{nom=Srv2; Address=126.168.1.3; Status=Success}
    @{nom=Srv3; Address=126.168.1.4; Status=Success}
    @{nom=Srv4; Address=126.168.1.50; Status=DestinationHostUnreachable}
    @{nom=Srv5; Address=126.168.1.6; Status=Success}


    Ou normalement l'adresse du Srv4 est 126.168.1.5 est non la 126.168.1.10 qui est l'adresse du ServeurPowershell

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    Désolé du temps de réponse j'étais en congé
    ce sera le mois prochain pour moi !!

    je soupçonne plus un problème de DNS que de script

    l'adresse IP afficher est celle que trouve le ping dans le dns,

    si tu fait des tests avec des postes en DHCP tu peut avoir ce problème
    car le poste inscris dans le dns sont adresse ip a chaque démarrage mais n'efface pas sont ancienne ip

  9. #9
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    D'accord, dans l'absolu ça fonctionne il ne reste plus que l mise en forme.. car la le tableau n'est pas très beau


    Merci!

  10. #10
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    bonne nouvelle !

    pour la mise en page voir le rayon HTML au fond du magasin a droite !!
    suis pas bon en HTML
    par contre pour mettre en rouge les lignes en erreur il te faudra modifier ton fichier html ligne par ligne, quelque chose comme ça :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $data | ConvertTo-Html -Head $head -PostContent "<h6>Créé le $(Get-Date)</h6>" | Out-File $html
     
    $result = Get-Content $html
    $result | foreach { 
        if ($_ -like "*DestinationHostUnreachable*" -or $_ -like "*TimedOut*") {
            $_ -replace "<tr>", '<tr style="background-color:firebrick; color:white;">'
            }
        else {
            $_
            }
        } | Set-Content $html

  11. #11
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour 6ratgus ,

    Je te remercie beaucoup, ça fonctionne parfaitement ! c'est super


    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dependance d'une liste par rapport à une autre
    Par jojo57 dans le forum JDBC
    Réponses: 1
    Dernier message: 01/12/2006, 21h18
  2. Réponses: 2
    Dernier message: 05/06/2006, 17h51
  3. Réponses: 2
    Dernier message: 04/06/2006, 20h11
  4. [InetAdress] isReachable : pb ping avec serveurs linux
    Par tck-lt dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 23/08/2005, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo