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 записать в текстовый документ.

Понравилась статья?

Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик и ваш вклад помогает держать серверы включёнными и авторов мотивированными!

Спасибо, что вы с нами!

Nazario

Я Назар. Уже больше десяти лет я работаю с Linux и Windows системами каждый день. Это моя основная профессия и большая часть жизни.
Всё, что ты читаешь на Setiwik.ru, начинается с официальной документации, мануалов и технических спецификаций. Я их изучаю очень внимательно. Но ценность статей появляется именно тогда, когда я беру эту базу и пропускаю через десятки реальных ситуаций: ночные аварии, странные баги, которые не гуглятся с первого раза, выстраданные конфиги и проверенные обходные пути.
Я не обещаю истину в последней инстанции. Но если мой опыт поможет тебе сэкономить хотя бы пару часов нервов и перезагрузок, значит всё это было не зря. Здесь только практика: от тонкой настройки серверов до самых неожиданных ситуаций, которые официальные руководства обычно обходят стороной.
Setiwik.ru это место, где IT становится понятнее и спокойнее. Заходи почаще. Будем разбираться вместе.

Практические инструкции по Windows и Linux
Добавить комментарий