Скрипт пинга с циклом и сохранение в текстовом формате - PullRequest
0 голосов
/ 08 июня 2010

Я пытаюсь сделать сценарий Ping с VBS. Мне нужен скрипт, который пингует (без ограничения пинга, программа будет работать постоянно) имя компьютера в сети каждые 2 секунды и сохраняет результаты в текстовом файле.

Например:

06.08.2010 - 13:53:22 | Компьютер "..." онлайн

06.08.2010 - 13:53:24 | Компьютер "..." не в сети

Теперь я попробую немного:

   strComputer = "TestPC"

    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
     ExecQuery("select * from Win32_PingStatus where address = '"_
     & strComputer & "'")
    For Each objStatus in objPing
     If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then 

    ..........          

    Next

И чем я не знаю, как это сделать. (Я новичок с VBS: -))

Надеюсь, кто-нибудь мне поможет.

Приветствие, Матиас

Ответы [ 2 ]

4 голосов
/ 08 июня 2010

Попробуйте это

Option Explicit

Dim strHost, strFile

strHost = "www.google.com" '"127.0.0.1"
strFile = "C:\Test.txt"

PingForever strHost, strFile

Sub PingForever(strHost, outputfile)
    Dim Output, Shell, strCommand, ReturnCode

    Set Output = CreateObject("Scripting.FileSystemObject").OpenTextFile(outputfile, 8, True)
    Set Shell = CreateObject("wscript.shell")
    strCommand = "ping -n 1 -w 300 " & strHost
    While(True)
        ReturnCode = Shell.Run(strCommand, 0, True)     
        If ReturnCode = 0 Then
            Output.WriteLine Date() & " - " & Time & " | The Computer " & strHost & " is online"
        Else
            Output.WriteLine Date() & " - " & Time & " | The Computer " & strHost & " is offline"
        End If
        Wscript.Sleep 2000
    Wend
End Sub
1 голос
/ 08 июня 2010

Вы помещаете свои пинги в какую-то петлю и затем используете Wscript.Sleep 2000, чтобы поспать 2 секунды.

Затем вы используете File System Object (FSO) для записи в файл. Информацию можно найти здесь .

Редактировать: что-то вроде этого может работать:

Const OpenFileForAppending = 8 
Dim fso, ts
Set fso = CreateObject("Scripting. FileSystemObject")

While 1 > 0 ' loop forever      
    Set ts = fso.OpenTextFile("c:\temp\test.txt", OpenFileForAppending, True)

    ' do your pinging code

    'if ok
        ts.WriteLine("OK")
    'else
        ts.WriteLine("Not OK")
    'endif

    ts.Close()
    Wscript.Sleep 2000
Wend
...