Скрипт уведомления о включении сервера (компьютера) по электронной почте или смс
И так, уважаемые коллеги. Думаю каждый сталкивался с проблемами неожиданных перезагрузок серверов по разным причинам. Хорошо если сервер перезагрузится, восстановится и будет работать дальше как ни в чем не бывало. Печаль в том, что при таком раскладе мы даже не увидим проблему, первыми звоночками которой будут перезагрузки, а вот когда придет писец, будет поздно. Это одна сторона медали. Но есть и вторая.
Например, у вас на сервере крутится прикладной софт, который нужно запускать руками…. И звонят потом пользователи и не знают в чем проблема…
Собственно говоря, лучше от таких вещах, как неплановое включение или перезагрузка сервера, лучше узнавать как можно скорее. Для этого я написал простой скрипт, который ведет лог и отправляет письмо на электронную почту. В принципе, подкорректировав его тексты сообщений, его можно использовать для уведомления о любых событиях. Но тут уж Ваша фантазия.
Способ применения этого скрипта:
1) Корректируем раздел ENVIROMENTS
2) Добавляем задание в поанировщик винды на срабатываение при включении компьютера.
Дальше все просто. Компьютер или сервер включился, планировщик запускает этот скрипт и скрипт отсылает письмо на почту или на СМС. Вот и все. После листинга скрипта, прилагаю его отдельным файлом, чтобы избежать проблем с копипастами, кодировками и прочим.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #Enviroments #Путь к файлам логов, например, c:\logs\ $logpath = 'ENTER_LOG_PATH' #Имя Лог-файла $lname = 'hdd-freespace.log' #IP-адрес или доменное имя почтового сервера, например, mail.ionline.by $IPMailServer="ENTER_IP_OR_NAME_MAIL_SERVER" #Адрес отправителя. Внимание, он же является логином для авторизации. $SenderEmail="ENTER_SENDER_E-MAIL" #Адрес получателя $RecipientEmail="ENTER_RECIPIENT_E-MAIL" #Пароль на ящик $pass = 'E-MAIL_PASSWORD' #Functions function Send-mail ($subj = "VM" ,$body = "Text", $AttachPath = "0") { $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage if ($AttachPath -ne "0") { $Attach = new-object System.Net.Mail.Attachment($AttachPath) $Msg.Attachments.add($Attach) } $Msg.To.Add($RecipientEmail) $Msg.from=$SenderEmail $Msg.Subject = $subj $Msg.Body= $body $SMTPClient.Host=$IPMailServer $SMTPClient.Credentials=New-Object System.Net.NetworkCredential "$SenderEmail" , "$pass" $SMTPClient.Send($Msg) #$Attach.Dispose() } #Code $time = Get-Date "$time" >> $logpath\$lname $servname = $env:computername "Сервер $servname был включен" >> $logpath\$lname $date = Get-Date -UFormat %T Send-mail -subj "$date $servname включение сервера" -body "$time ВНИМАНИЕ! Сервер $servname был включен.!!!" |
Скрипт уведомлений:
[dm]3[/dm]