Содержание
Работаете ли вы в области ИТ, веб-дизайнером или просто являетесь студентом или обычным офисным работником, у Windows Scripting есть что предложить. Конечно, Applescript
тоже хорошо, но в данном случае я фокусируюсь на Windows. Когда я ссылаюсь на Windows Scripting, я имею в виду текстовые файлы, заполненные кодом, которые сохраняются как файлы .wsf, которые Windows может компилировать и запускать на лету.
Почти год назад я написал введение в Windows Scripting
который показал, насколько мощнее может быть сценарий .wsf, чем пакетные задания более старого стиля, которые ИТ-специалисты создавали и выполняли в течение многих лет. WSF дает вам возможность структурированного языка, такого как Visual Basic. По умолчанию вы можете создать VBScript или JScript WSF-файл в Windows, и он будет работать нормально.
Помимо этой вводной статьи, сегодня я хотел предложить три типичных инструмента, которые люди часто используют как в профессиональной ИТ-среде, так и дома. Эти три инструмента включают чтение ввода из текстового файла, проверку связи с различными устройствами в вашей сети и отправку электронной почты с помощью сценария.
Сила сценариев Windows
Изучение каждого из этих небольших компонентов позволит вам объединить их в более крупный автоматизированный сценарий. Я собираюсь пройтись по небольшим образцам сценариев, которые вы можете собрать в очень крутой автоматический сценарий. То, что будет делать этот скрипт, это взять список входных IP-адресов из текстового файла, пропинговать каждое из этих устройств, а затем отправить электронное письмо с предупреждением, если какое-либо из этих устройств не работает.
Чтение входных файлов
Первым шагом в этом процессе является изучение того, как читать и обрабатывать информацию из входного текстового файла. В этом случае я создал текстовый файл IPlist.ini, который находится в том же каталоге, что и скрипт. Этот файл содержит список всех IP-адресов, которые я хочу проверить. Вы можете прочитать в каждой строке текстового файла, используя следующий скрипт.
Option Explicit On Error Resume NextDim strHost Dim strCommand Dim ReturnCode Dim strLine Dim oFSO, sFile, oFile, sTextSet Shell = wscript.createObject("wscript.shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sFile = "c:\users\owner\scripts\IPlist.ini" If oFSO.FileExists(sFile) Then Set oFile = oFSO.OpenTextFile(sFile, 1) Do While Not oFile.AtEndOfStream sText = oFile.ReadLine If Trim(sText) - Then strCommand = sText wscript.echo "IP Address is: " & sText End If Loop oFile.CloseElse WScript.Echo "The file was not there." End If WScript.Quit
Этот код использует объект файловой системы Windows, чтобы открыть файл, а затем читает по одной строке текста за раз, пока он не достигнет конца файла.
Pinging A Host
Теперь, когда вы знаете, как читать каждый IP-адрес из текстового файла, как вы выполняете Ping с использованием сценариев Windows?
Проверка связи немного сложнее, чем чтение в текстовом файле, потому что вы должны использовать сценарии инструментария управления Windows (WMI). Вот как это выглядит.
Option Explicit On Error Resume NextDim colPingResults, objPingResult, strQuery Dim strIPtext strIPtext = "192.168.1.105"' WMI query strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & strIPtext & "'"Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )' Translate query resultsFor Each objPingResult In colPingResults If Not IsObject( objPingResult ) Then Ping = False wscript.echo strIPtext & " is not pingable" ElseIf objPingResult.StatusCode = 0 Then Ping = True wscript.echo strIPtext & " is pingable" Else Ping = False wscript.echo strIPtext & " is not pingable" End If Next Set colPingResults = Nothing WScript.Quit
Видишь, как легко это было? Когда я запускаю его, появляется всплывающее окно с информацией о том, был ли IP проверен или нет.
В этом сценарии я пропинговал только один IP-адрес, но все, что вам нужно сделать, это вставить этот пинг в предыдущий скрипт после того, как каждый IP-адрес будет считан из текстового файла, и вы можете пропинговать каждый IP-адрес в своем списке ,
Отправка электронной почты
Наконец, хотя неплохо иметь скрипт, который вы можете запустить, который будет проверять IP-адреса и отображать всплывающее окно, если есть какие-либо ошибки, было бы неплохо запускать скрипт ежедневно или несколько раз в день и иметь его автоматически по электронной почте с проблемами?
Для этого вам нужно знать, как отправить письмо в скрипте. Если вы исследуете онлайн, вы обнаружите десятки (или более) способов, которыми люди достигают этого. Безусловно, самым популярным является использование подхода CDO.
Option Explicit On Error Resume NextConst fromEmail = "rdxxxx@gmail.com" Const password = "xxxxxxxx"Dim emailObj, emailConfig Set emailObj = CreateObject("CDO.Message") emailObj.From = alert@topsecretwriters.com emailObj.To = "rdxxxxx@gmail.com" emailObj.Subject = "Test Email" emailObj.TextBody = "It Works!!"Set emailConfig = emailObj.Configuration emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = fromEmail emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = password emailConfig.Fields.Update emailObj.Send Set emailobj = nothing Set emailConfig = nothing WScript.Quit
Приведенный выше скрипт позволит вам отправить любой текст для тела сообщения в виде электронного письма на любой адрес, используя ваши учетные данные Gmail. Вы можете изменить параметры для использования любого другого почтового SMTP-сервера, который вам нравится.
Теперь все, что вам нужно сделать, это собрать эти три куска кода вместе. Когда вы это сделаете, скрипт будет читать каждый список IP-адресов, пинговать каждый из них, а затем отправлять эту строку в качестве тела сообщения на электронное письмо с уведомлением. Вот как будет выглядеть это письмо.
Как вы можете себе представить, это становится довольно полезным в мире ИТ, где у вас есть бесконечный список устройств и серверов, за которыми нужно следить, и только 24 часа в сутки. Каждый раз, когда у вас могут быть автоматизированные сценарии, которые могут что-то проверять, делайте это.
Попробуйте эти сценарии Windows и посмотрите, поможет ли это оптимизировать вашу работу и сделать ее более эффективной. Знаете ли вы о каких-либо других интересных вещах, которые вы можете сделать с помощью сценариев Windows? Поделитесь своими мыслями в разделе комментариев ниже.
Кредит изображения: Марио Альберто Магалланес Трехо