How to ping multiple servers and return IP address and Hostnames using batch script?

后端 未结 8 1723
余生分开走
余生分开走 2020-12-28 10:45

So I have to use batch only for this. Basically, the server HOSTNAMES are all listed in a txt file. I used the following code to ping all the servers and di

8条回答
  •  清歌不尽
    2020-12-28 11:26

    I worked on the code given earlier by Eitan-T and reworked to output to CSV file. Found the results in earlier code weren't always giving correct values as well so i've improved it.

    testservers.txt

    SOMESERVER
    DUDSERVER
    

    results.csv

    HOSTNAME    LONGNAME                    IPADDRESS   STATE 
    SOMESERVER  SOMESERVER.DOMAIN.SUF       10.1.1.1    UP 
    DUDSERVER   UNRESOLVED                  UNRESOLVED  DOWN 
    

    pingtest.bat

     @echo off
        setlocal enabledelayedexpansion
        set OUTPUT_FILE=result.csv
    
        >nul copy nul %OUTPUT_FILE%
        echo HOSTNAME,LONGNAME,IPADDRESS,STATE >%OUTPUT_FILE%
        for /f %%i in (testservers.txt) do (
            set SERVER_ADDRESS_I=UNRESOLVED
            set SERVER_ADDRESS_L=UNRESOLVED
            for /f "tokens=1,2,3" %%x in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
            if %%x==Pinging set SERVER_ADDRESS_L=%%y
            if %%x==Pinging set SERVER_ADDRESS_I=%%z
                if %%x==SERVER_IS_UP (set SERVER_STATE=UP) else (set SERVER_STATE=DOWN)
            )
            echo %%i [!SERVER_ADDRESS_L::=!] !SERVER_ADDRESS_I::=! is !SERVER_STATE!
            echo %%i,!SERVER_ADDRESS_L::=!,!SERVER_ADDRESS_I::=!,!SERVER_STATE! >>%OUTPUT_FILE%
        )
    

提交回复
热议问题