Как пинговать несколько серверов и вернуть их IP-адреса - PullRequest
0 голосов
/ 26 августа 2009

У меня есть текстовый файл, который содержит список различных имен серверов (по одному имени сервера в строке).

Мне интересно, смогу ли я написать скрипт для проверки связи со всеми серверами и вывода IP-адресов в текстовый файл.

Любые советы будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 26 октября 2009

Я наконец нашел скрипт VB через здесь .

По сути, скрипт извлекает список серверов из server.txt (этот файл содержит построчные имена хостов) и генерирует CSV-файл, который содержит подробные результаты проверки связи всех серверов.

ПРИМЕЧАНИЕ : НЕ называйте скрипт как «ping.vbs», так как он будет использовать «ping.vbs» для пинга хостов вместо команды «ping».

Вот сценарий:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
If not objFSO.FileExists("servers.txt") THEN
wscript.echo "Please create a file named 'servers.txt' with one PC name to be pingedper line,"&_
vbcrlf&"with a hard return at the end of each line."
wscript.quit
end if
tempobj="temp.txt"


Set objTextFile = objFSO.OpenTextFile("servers.txt", ForReading)
logfile="results.csv"
Set ofile=objFSO.CreateTextFile(logfile,True)
strText = objTextFile.ReadAll
objTextFile.Close
wscript.echo "Ping batch starting, please be patient.  This could take some time to"&_
vbcrlf&"finish, depending on the number of hosts to check.  You "_
&"will be "&vbcrlf&"notified upon the completion of this script."
ofile.WriteLine ","&"Ping Report -- Date: " & Now() & vbCrLf
arrComputers = Split(strText, vbCrLF)
for each item in arrcomputers
objShell.Run "cmd /c ping -n 1 -w 1000 " & item & " >temp.txt", 0, True
Set tempfile = objFSO.OpenTextFile(tempobj,ForReading)
Do Until tempfile.AtEndOfStream
temp=tempfile.readall
  striploc = InStr(temp,"[")
        If striploc=0 Then
            strip=""
        Else
            strip=Mid(temp,striploc,16)
            strip=Replace(strip,"[","")
            strip=Replace(strip,"]","")
            strip=Replace(strip,"w"," ")
            strip=Replace(strip," ","")
        End If      

        If InStr(temp, "Reply from") Then
             ofile.writeline item & ","&strip&","&"Online."
        ElseIf InStr(temp, "Request timed out.") Then
             ofile.writeline item &","&strip&","&"No response (Offline)."
        ELSEIf InStr(temp, "try again") Then
             ofile.writeline item & ","&strip&","&"Unknown host (no DNS entry)."

        End If
        Loop
        Next
tempfile.close
objfso.deletefile(tempobj)
ofile.writeline
ofile.writeline ","&"Ping batch complete "&now()
wscript.echo "Ping batch completed.  The results will now be displayed."
objShell.Run("""C:\YOUR OFFICE INSTALL PATH\Microsoft Office\Office10\excel.exe """&logfile)
0 голосов
/ 26 августа 2009

Надеюсь, это поможет http://smartproteam.com/shell-script-ping-multiple-hosts/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...