none
Par défaut Une solution de script Shell sous Win pour tester les ping et telnet sur multi_site RRS feed

  • Question

  • Bonjour, 

    Je me permet de vous écrire suite a un blocage de plusieurs jour pour résoudre le problème pour mon script je viens de commencer sur shell : 

    Le principe de ce code est de faire un : 

    - Test sur : 
    * ping GOOGLE.FR et test.FR
    * telnet test 10050 
    * telnet localhost 20150

    - et afficher le hostname et le SID(Security Identifiers) de la machine windows.

    >> Résultat souhaité : pour le ping et telnet : résultat doit afficher si le test de ping est bon alors afficher "success" sinon afficher "failed", même prince pour telnet .

    Une fois mon code s’exécute doit m'envoyer des fichiers de log à un chemin précis à déclarer, ainsi doit m'envoyer un rapport de résultat par email si c'est possible.

    Je demande un retour d'expérience svp  Merci pour vos retour.

    # récuperer hostname 
    $env:computername
    
    # test connectivité google et code42
    $ServerName = "www.google.fr","www.code42.fr"
    ##### Script Starts Here ###### 
    
    foreach ($Server in $ServerName) {
    
            if (test-Connection $Server -Count 2 -Quiet ) { 
            
                write-Host "$Server succes " -ForegroundColor Green
            
                        } else
                        
                        { Write-Warning "$Server failed"
                
                        }    
            
    }
    


    samedi 16 mai 2015 00:28

Toutes les réponses

  • Bonjour,

    Pour améliorer ton code tu peux tout d'abord créer une fonction et utiliser un parametre de fonction pour passer le nom ou les noms de poste à ta fonction. 

    Si tu veux créer un log il y a une méthode très simple qui te permet de stocker les erreurs dans une variable puis d'en exporter le tout dans un fichier à la fin de ton traitement.

     test-connection -ErrorVariable $Global:ErrorLogs

    Passer le périmètre de ta variable en global te permettra de recuperer son contenu hors de celle-ci.

    Voici le code complet j'éspère que cela t'aidera car ma réponse est un peu tardive :

    Function Test-ComputerConnection
    {  
        [cmdletbinding()]
     
        Param(
     
            [Parameter(mandatory=$False,HelpMessage ="Saisir le(s) nom(s) d'ordinateur(s) séparé(s) par des virgules")]    
            [ValidateNotNullOrEmpty()]
            [String[]]$ComputerName
        )
    
        Begin{
       
            # Create date string 
            $date= Get-date -Format "dd.MM.yyyy hh.mm"
    
            # Check if report folder exist
     
            $reportfolder=test-path -path $date
     
            # Create report folder if does not exist
     
     
            if(!$reportfolder)
    
            {
     
     
            New-Item -ItemType directory -Name "$date"}
    
        }
    
    
        Process{
    
            
     
     
            foreach($computer in $ComputerName)
            {
     
                $icmp=test-connection -ComputerName $computer -count1 -Quiet -ErrorVariable +Global:ErrorLogs; 
     
                if(!$icmp) {
                   
                    Write ($output="$computerrépondu au ping en date du $date") 
    
                $Log_Nok=$output|Out-File./$date/report_network.txt-Append-ErrorVariable+Global:ErrorLogs}
    
                else
                {
                    Write ($output="$computera répondu au ping en date du $date")
     
                $Log_OK= $output | out-file ./$date/report_network.txt -Append -ErrorVariable +Global:ErrorLogs
                }
            }
    
        }
    
        End{ 
            # Check if error variable is empty
    
            If($ErrorLogs)
            { 
                $ErrorLogs | Out-File./$date/global_function_errors.txt
    
                Write-Host "La variable contient quelque erreurs : $ErrorLogs.count"
    
            Write-Host 'Vous pouvez utiliser la commande suivante : "$strerror.Message.Exception"'}
     
            # Report that error variable is empty to host
     
            Else{
                Write-Host"La fonction c'est executée sans erreur"
            }     
    
        }
    
    }


    Kévin KISOKA - MCITP Entreprise Messaging Administrator, MCTS Hyper-V Server Virtualization I do not represent the organisation I work for, all the opinions expressed here, are my own. This posting is provided AS IS with no warranties or guarantees and confers no rights.


    jeudi 28 mai 2015 12:29
  • Function Do-Nmap {
    
    Param(
     [Parameter(Mandatory=$True)]
    [string]$ComputerName=$(throw 'ComputerName is mandatory, please provide a value.'),
    [string]$Ports=$(throw 'Port number is mandatory, please provide a value.')
    )
    
    foreach ($Computer in $ComputerName) {
        
        foreach ($Port in $Ports) {
            
            # Create a Net.Sockets.TcpClient object to use for
            # checking for open TCP ports.
            $Socket = New-Object Net.Sockets.TcpClient
            
            # Suppress error messages
            $ErrorActionPreference = 'SilentlyContinue'
            
            # Try to connect
            $Socket.Connect($Computer, $Port)
    
            # Make error messages visible again
            $ErrorActionPreference = 'Continue'
            
            # Determine if we are connected.
            if ($Socket.Connected) {
                
                "${Computer}: Port $Port is open"
                $Socket.Close()
                
            }
            else {
                
                "${Computer}: Port $Port is closed or filtered"
                
            }
            # Apparently resetting the variable between iterations is necessary.
            $Socket = $null
        }
     }   
    }






    jeudi 28 mai 2015 12:35
  • Salut Kévin,

    pour info le code que tu cites est inutilisable en l'état.


    Beatus, qui prodest, quibus potest.

    jeudi 28 mai 2015 14:24
    Modérateur
  • Bonjour Laurent ,

    il n'y a pas d'erreur de typo ou d'algo dans le code que j'ai copié ceci est dû à la mise en forme un peu bancale du forum je vais l'insérer différemment merci pour ta remarque.


    Kévin KISOKA - MCITP Entreprise Messaging Administrator, MCTS Hyper-V Server Virtualization I do not represent the organisation I work for, all the opinions expressed here, are my own. This posting is provided AS IS with no warranties or guarantees and confers no rights.

    vendredi 29 mai 2015 07:42