Скрипт уведомления о включении сервера (компьютера) по электронной почте или смс

И так, уважаемые коллеги. Думаю каждый сталкивался с проблемами неожиданных перезагрузок серверов по разным причинам. Хорошо если сервер перезагрузится, восстановится и будет работать дальше как ни в чем не бывало. Печаль в том, что при таком раскладе мы даже не увидим проблему, первыми звоночками которой будут перезагрузки, а вот когда придет писец, будет поздно. Это одна сторона медали. Но есть и вторая.

Например, у вас на сервере крутится прикладной софт, который нужно запускать руками…. И звонят потом пользователи и не знают в чем проблема…

Собственно говоря, лучше от таких вещах, как неплановое включение или перезагрузка сервера, лучше узнавать как можно скорее. Для этого я написал простой скрипт, который ведет лог и отправляет письмо на электронную почту. В принципе, подкорректировав его тексты сообщений, его можно использовать для уведомления о любых событиях. Но тут уж Ваша фантазия.

Способ применения этого скрипта:

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 был включен.!!!"

Скрипт уведомлений:

http://www.ionline.by/wp-content/plugins/downloads-manager/img/icons/powershell.gif Скачать: poweron-signalizer.ps1 ()
Файл добавлен: 22/01/2013
Количество скачиваний: 1450
Описание: Скрипт для извещения по e-mail или по SMS о включении компьютера или сервера.

     

iOnLine - сайт о мире IT  | Мобильная версия


Полная версия сайта