VBS скрипт диагностики внутренней сети

Всем привет в этой статье я расскажу как написать VBS скрипт диагностики внутренней сети. Т.е. этот скрипт хорошо использовать системному администратору для диагностики.

Этот скрипт проверки работоспособности сетевых сервисов. Очень удобно, когда приходишь на работу утром, запустил скриптик и результат на лицо))

Результат VBS скрипта после диагностики внутренней сети
Результат VBS скрипта после диагностики внутренней сети

Ну это при условии, если Вы не хотите устанавливать “жадное ПО”. Впрочем можно доделать под свои нужды, если будут пожелания, пишите в комментариях.

Текст ниже можно скопировать в текстовый файлик и пересохранить с расширением *.vbs. После такой манипуляции текстовый файл превратится в скрипт. Если вам все же не хочется это делать, тогда вы можете его скачать. Ссылка в конце статьи.

VBS скрипт диагностики сети

status = vbInformation
StrKar = CHR (13) + CHR (10) ' Перенос каретки
myStr = "Диагностика сети v1.0:" + StrKar

'------------------------
' Пример Ping()
'------------------------
myStr = myStr + StrKar + "Серверы:" + StrKar
If ping("10.0.0.111") then
myStr = myStr + "Сервер - шлюз - [OK]" + StrKar
Else
myStr = myStr + "Сервер шлюз - [недоступен!!!]" + StrKar
status = vbCritical
end if

myStr = myStr + StrKar + "Сервисы:" + StrKar
If ping("ya.ru") then
myStr = myStr + "Интернет (ya.ru) - [OK]" + StrKar
Else
myStr = myStr + "Интернет (ya.ru) - [недоступен!!!]" + StrKar
status = vbCritical
end if

myStr = myStr + StrKar + "Сервисы:" + StrKar
If ping("10.0.0.211") then
myStr = myStr + "DNS, domain (10.0.0.211) - [OK]" + StrKar
Else
myStr = myStr + "DNS, domain (10.0.0.211) - [недоступен!!!]" + StrKar
status = vbCritical
end if

myStr = myStr + StrKar + "Сервисы:" + StrKar
If ping("10.0.0.31") then
myStr = myStr + " (10.0.0.31) - [OK]" + StrKar
Else
myStr = myStr + "Интернет (10.0.0.31) - [недоступен!!!]" + StrKar
status = vbCritical
end if

myStr = myStr + StrKar + "Сервисы:" + StrKar
If ping("10.0.0.41") then
myStr = myStr + " (10.0.0.41) - [OK]" + StrKar
Else
myStr = myStr + "Интернет (10.0.0.41) - [недоступен!!!]" + StrKar
status = vbCritical
end if

myStr = myStr + StrKar + "Сервисы:" + StrKar
If ping("10.0.0.50") then
myStr = myStr + " (10.0.0.50) - [OK]" + StrKar
Else
myStr = myStr + "Интернет (10.0.0.5) - [недоступен!!!]" + StrKar
status = vbCritical
end if

'----------------------------
' Пример nslookup()
'----------------------------
If Nslookup("meta.ua") then
myStr = myStr + "DNS Server (nslup meta.ua) - [OK]" + StrKar
Else
myStr = myStr + "DNS Server (nslkup meta.ua) - [недоступен!!!]" + StrKar
status = vbCritical
end if

'----------------------------
' Пример IsAPIPA()
'----------------------------
if IsAPIPA then
myStr = myStr + StrKar + "Дополнительно:" + StrKar + "IP адрес - [APIPA!!!]" + StrKar
myStr = myStr + "Внимание. Обнаружен некорректный ip адрес!!!" + StrKar
myStr = myStr + "Перезагрузите компьютер. Если проблема повторится, проверьте доступность DHCP сервера либо назначьте ip адрес вручную" + StrKar
myStr = myStr + "Примечание: Если при этом у вас прекрасно работает сеть, считайте данное сообщение ошибочным" + StrKar
else
myStr = myStr + StrKar + "Дополнительно:" + StrKar + "IP адрес - [OK] (Не APIPA)" + StrKar
end if

'----------------------------
' Вывод результатов
'----------------------------
msgbox myStr, status, "Результаты:"

'------------------
' Функции
'------------------
Function Ping(strAddr)
' Проверяем доступность компьютера с помощью команды PING
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 1 " & strAddr)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)

' Возвращаем результат:
Ping = InStr(strPingResults, "ttl=")
End Function

Function Nslookup(strAddr)
' Проверяем работу DNS сервера через nslookup
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("%comspec% /c nslookup.exe -q=mx " & strAddr)
strNslookupResults = LCase(objScriptExec.StdOut.ReadAll)

' Возвращаем результат:
Nslookup = InStr(strNslookupResults, "mail")
End Function

Function IsAPIPA()
' Проверяет, нет ли сетевых карт, получивших APIPA адрес
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("%comspec% /c ipconfig /all")
strIsAPIPAResults = LCase(objScriptExec.StdOut.ReadAll)

' Возвращаем результат:
IsAPIPA = InStr(strIsAPIPAResults, "169.254.")
End Function

Скачать готовый скрипт VBS для диагностики сети

Готовый скрипт VBS

Так же рекомендую посмотреть статью ping с записью в файл. Эта статья рассказывает о том как команду ping записать в текстовый документ.

Nazario

Я — Nazario, тот самый человек, который больше десяти лет ковыряется в Linux и Windows системах не ради хобби, а потому что это — работа и жизнь. Всё, что вы читаете на Setiwik.ru, — это не пересказ справки из мануала, а результат десятков реальных кейсов, выстраданных конфигов и ночных перезагрузок.

Я не претендую на истину в последней инстанции. Но если мой опыт может кому-то упростить работу — значит, всё это не зря. Здесь нет «магии», только практика: от настроек сервера до неожиданных багов, которые не гуглятся с первого раза.

Setiwik.ru — это место, где IT становится чуть менее хаотичным. Заходите почаще — будем разбираться вместе.

Добавить комментарий