PS:Мониторинг портов, доступности,рассылка уведомлений мылом

Ответить
M.K
Новичок
Сообщения: 9
Зарегистрирован: 04 дек 2014 16:52

PS:Мониторинг портов, доступности,рассылка уведомлений мылом

Сообщение M.K » 19 дек 2014 10:35

###############################################################################
#Скрипт из файла server_port_testing.ini забирает для проверки имена серверов и порты, разделенные пробелами
#сохраняет лог в файл server_ports_test_sts_$CurrentDateFile.txt с префиксом сегодняшняя ДАТА
#внутри файла пишет: Дату проверки, имя сервера , номер порта, статус порта.
$ErrorActionPreference = "SilentlyContinue"
#даты для файлов и логов
$CurrentDate=Get-Date -uFormat "%H:%M:%S_%d:%m:%y"
$CurrentDateFile=Get-Date -UFormat "%d%m%y"
#чистим переменные
$DB=""
$data_to_file = ""
$data_from_file = ""
#DB - грузим данные из файла какие Сервера какие Порты. разделитель у меня пробле
# можно поменять на любой только где -split ' ' пробел заменить на нужный разделитель
$DB = Get-Content D:\reports\RUN\server_port_testing.ini
#грузим стырые данные из лога
$data_from_file= gc D:\reports\Logs\server_ports_test_sts_$CurrentDateFile.txt

foreach ($Data in $DB) {
$server, $port= $Data -split ' ' -replace '^\s*|\s*$'

#write-host "server is: "$server
#write-host "port is: "$port

$socket = new-object Net.Sockets.TcpClient
$socket.Connect($server, $port)
# если все хорошо
if ($socket.Connected) {
$status = "Open"
$socket.Close()
}
# если все плохо пишем письмо
else {
$status = "Close"
#у меня разрешено анонимно слать на мыльный сервер письма . если у вас требуется авторизация - смотрите доп. параемтры к кмоандлету
send-mailmessage -from host4.report@contoso.com -to admin@contoso.com -subject "$server $port $CurrentDate" -body "$server $port $status" -smtpServer email.contoso.com
}
#write-host $status
#формируем данные для записи в лог
$data_to_file = $data_to_file+$CurrentDate +" "+ $server +" " + $port +" " + $status +"`r`n"
}
#пишем старые данные и добавляем текущие данные
$data_from_file + $data_to_file | Out-File D:\reports\Logs\server_ports_test_sts_$CurrentDateFile.txt
###############################################################################

пример файла с серверами
в файле не оставлять: пустую(ые) строку(ки); пробелы за портами.


APP01 443
APP02 80
BACKUP 28080
BOOKER 3389
BUH1 1




##############

как то так, может кому то сэкономит время.

Ответить

Вернуться в «Powershell»