VBS проверка на вывод netstat - PullRequest
0 голосов
/ 01 июля 2011

Я создал эту проверку:

' Check if windows or mac
if not objFSO.FolderExists("\\Client\C$\.") then
Wscript.Quit
end if

Эта проверка состоит в том, чтобы просто увидеть, является ли она системой Windows или нет.Если это машина Windows, тогда запустите скрипт, если нет, я просто хочу, чтобы он завершился.Мне нужно сделать еще одну проверку, чтобы убедиться, что оба условия выполняются, и я не знаю как.Есть вывод с использованием команды netstat.Под локальным адресом. Существует адрес с портом 1494 с именем машины cag.domain.com.Как я могу включить проверку для этого, чтобы обе части были верны для запуска сценария, если не сценарий просто закрывается.Так что если \ Client \ C $.= True и локальный адрес: 1494 и внешний адрес = cag.domain.com = false, скрипт не запустится.

1 Ответ

1 голос
/ 01 июля 2011

Я сейчас не на машине с Windows, поэтому не могу дать вам правильные параметры для netstat или правильного шаблона регулярных выражений, но для проверки вывода netstat Я бы сделал что-то вроде:

Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = ":1497[ ]cag[.]domain[.]com"

Set oExec = WshShell.Exec("netstat -a")

'wait for the end of process (busy wait, yuck!)
Do While oExec.Status = 0
     WScript.Sleep 100
Loop

'scan the command output flow 
Dim oMatchColl, gotNetstat
gotMatch = false
Do While oExec.StdOut.AtEndOfStream <> True
    oMatchColl = myRegExp.Execute(oExec.StdOut.ReadLine)
    If oMatchColl.Count > 0 Then
        gotNetstat = true
        Exit Do
    End If
Loop

Подробнее:

...