background img

The New Stuff

Перезапуск сервиса

Типовая задача, которую можно встретить почти везде, состоит в периодическом перезапуске сервисов. Желательно с отчетом о результате выполнения и пр.

Собственно данная логика легко реализуется с помощью следующего скрипта.

# функция перезапуска сервиса
function restart-service {
# парамет вызова – имя сервиса
param ($srvName)
# Останавливаем сервис
Stop-Service $srvName
$service = get-service $srvName
# читаем его состояние
if ($service.status -ne "Stopped") {
# если не удалось остановить сервис то отправляем сообщение
send-email($srvName + " has failed to stop, please manually stop and restart.")
Write-Host ($srvName + " has failed to stop, please manually start.")
}
# Запускаем сервис
start-Service $srvname
$service = get-service $srvName
if($service.status -ne "Running") {
# если не удалось запустить сервис то отправляем сообщение
send-email ($srvName + " has failed to start, please manually start.")
Write-Host ($srvName + " has failed to start, please manually start.")
} else {
Write-Host ($srvName + " has started.")
}
}
# функция отправки сообщения
function send-email {
param ($body)
# от кого
$From = "report@example.com"
# кому
$To = "admin@example.com"
# тема сообщения
$Subject = "Service problem on server – SRV01"
# указываем имя SMTP сервера
$SMTPServer = "SMTP_HOST_NAME"
$SMTPMessage = New-Object System.Net.Mail.MailMessage $From, $To, $Subject,$Body
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SMTPServer
$SMTPClient.Send($SMTPMessage)
}
# перестартовываем сервис BITS
restart-service Bits

Типовая задача, которую можно встретить почти везде, состоит в периодическом перезапуске сервисов. Желательно с отчетом о результате выполнения и пр.

Собственно данная логика легко реализуется с помощью следующего скрипта.

# функция перезапуска сервиса
function restart-service {
# парамет вызова – имя сервиса
param ($srvName)
# Останавливаем сервис
Stop-Service $srvName
$service = get-service $srvName
# читаем его состояние
if ($service.status -ne "Stopped") {
# если не удалось остановить сервис то отправляем сообщение
send-email($srvName + " has failed to stop, please manually stop and restart.")
Write-Host ($srvName + " has failed to stop, please manually start.")
}
# Запускаем сервис
start-Service $srvname
$service = get-service $srvName
if($service.status -ne "Running") {
# если не удалось запустить сервис то отправляем сообщение
send-email ($srvName + " has failed to start, please manually start.")
Write-Host ($srvName + " has failed to start, please manually start.")
} else {
Write-Host ($srvName + " has started.")
}
}
# функция отправки сообщения
function send-email {
param ($body)
# от кого
$From = "report@example.com"
# кому
$To = "admin@example.com"
# тема сообщения
$Subject = "Service problem on server – SRV01"
# указываем имя SMTP сервера
$SMTPServer = "SMTP_HOST_NAME"
$SMTPMessage = New-Object System.Net.Mail.MailMessage $From, $To, $Subject,$Body
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SMTPServer
$SMTPClient.Send($SMTPMessage)
}
# перестартовываем сервис BITS
restart-service Bits


0 коммент.:

Отправить комментарий

Popular Posts