none
Скрипт для проверки PINGом ресурса + отправка на e-mail. RRS feed

  • Вопрос

  • Нашел на ресурсе отдельные скрипты для пинга и для отправки в PShell Но вот как их объединить я не знаю.. навыков к сожалению нет. Помогите кто нибудь, может у кого готовый есть.

    Или не в PowerShell, это не важно, будем по шедулеру запускать и проверять..

    27 ноября 2014 г. 12:00

Ответы

  • Как-то так

    $smtpServer = "SMTP-сервер"
    $smtpFrom = New-Object system.net.Mail.MailAddress "Адрес отправителя", "Отображаемое имя"
    $smtpTo = "Адрес получателя"
    
    $Addresses="IP1","IP2"
    foreach ($address in $Addresses)
    {
    	if(!(Test-Connection -ComputerName $address -BufferSize 16 -Count 1 -ea 0 -quiet))
    	{
    		$messageSubject = "Заголовок сообщения"	
    		$Body="Адрес "+$address+" недоступен"
    		$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
    		$message.Subject = $messageSubject
    		$message.IsBodyHTML = $true
    		$message.Body = ConvertTo-Html -Body $Body
    		Write-Verbose "Sending email report"
    		$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
    		$smtp.Send($message)
    	}
    }


    Innovation distinguishes between a leader and a follower - Steve Jobs



    • Помечено в качестве ответа Avksentyev Sergey 27 ноября 2014 г. 15:06
    • Изменено Ilya Ershov 28 ноября 2014 г. 8:12
    27 ноября 2014 г. 13:03
  • Если почтовый сервер требует аунтификации, как быть?

    https://philerb.com/2011/11/sending-mail-with-powershell/

    $SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
    $SMTPClient.EnableSsl = $true
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
    $SMTPClient.Send( $emailMessage )
    
    Лучше использовать встроенный командлет Send-MailMessage - https://technet.microsoft.com/en-us/library/hh849925.aspx

    11 марта 2016 г. 10:06
    Отвечающий

Все ответы

  • Расскажите, откуда надо получать имена компьютеров для проверки (из файла, из сетевого окружения, из домена)?

    Отправлять информацию о недоступности надо в одном письме с указанием всех недоступных компьютеров или по каждому в отдельности?


    Innovation distinguishes between a leader and a follower - Steve Jobs

    27 ноября 2014 г. 12:11
  • адреса два. Они не меняются, мне надо проверять доступность gateway на удаленных площадках, отправлять можно как угодно.. Мне главное информация, если упал один, достаточно прислать "АХТУНГ" и все.. Как проще так и пускай будет.
    27 ноября 2014 г. 12:50
  • Как-то так

    $smtpServer = "SMTP-сервер"
    $smtpFrom = New-Object system.net.Mail.MailAddress "Адрес отправителя", "Отображаемое имя"
    $smtpTo = "Адрес получателя"
    
    $Addresses="IP1","IP2"
    foreach ($address in $Addresses)
    {
    	if(!(Test-Connection -ComputerName $address -BufferSize 16 -Count 1 -ea 0 -quiet))
    	{
    		$messageSubject = "Заголовок сообщения"	
    		$Body="Адрес "+$address+" недоступен"
    		$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
    		$message.Subject = $messageSubject
    		$message.IsBodyHTML = $true
    		$message.Body = ConvertTo-Html -Body $Body
    		Write-Verbose "Sending email report"
    		$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
    		$smtp.Send($message)
    	}
    }


    Innovation distinguishes between a leader and a follower - Steve Jobs



    • Помечено в качестве ответа Avksentyev Sergey 27 ноября 2014 г. 15:06
    • Изменено Ilya Ershov 28 ноября 2014 г. 8:12
    27 ноября 2014 г. 13:03
  • Илья, я если честно в шоке ))) Для меня эти буквы вообще ничего не говорят, но вот как то это все работает!!! Спасибо !
    27 ноября 2014 г. 15:08
  • Вопрос, как сделать если smtp сервер требует аунтификации?
    10 марта 2016 г. 16:06
  • Если почтовый сервер требует аунтификации, как быть?
    10 марта 2016 г. 16:13
  • Если почтовый сервер требует аунтификации, как быть?

    https://philerb.com/2011/11/sending-mail-with-powershell/

    $SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
    $SMTPClient.EnableSsl = $true
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
    $SMTPClient.Send( $emailMessage )
    
    Лучше использовать встроенный командлет Send-MailMessage - https://technet.microsoft.com/en-us/library/hh849925.aspx

    11 марта 2016 г. 10:06
    Отвечающий
  • PS H:\> $smtpServer = "smtp.mail.ru"
    $smtpFrom = New-Object system.net.Mail.MailAddress "samara111085@mail.ru", "Монитор-DC"
    $smtpTo = "samara111085@mail.ru"
    $emailSmtpUser = "samara111085@mail.ru"
    $emailSmtpPass = "xxxxxxxxxxxxxxxxx"
    $emailSmtpServer = "smtp.mail.ru"
    $emailSmtpServerPort = "465"

    $Addresses="172.16.1.53","172.16.1.2"
    foreach ($address in $Addresses)
    {
    if(!(Test-Connection -ComputerName $address -BufferSize 16 -Count 1 -ea 0 -quiet))
    {
    $messageSubject = "Заголовок сообщения"
    $Body="Адрес "+$address+" недоступен"
    $message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
    $message.Subject = $messageSubject
    $message.IsBodyHTML = $true
    $message.Body = ConvertTo-Html -Body $Body
    Write-Verbose "Sending email report"
    $SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
            $SMTPClient.EnableSsl = $true
            $SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
            $SMTPClient.Send( $message )
    }
    }
    Исключение при вызове "Send" с "1" аргументами: "Время ожидания операции истекло."
    строка:24 знак:9
    +         $SMTPClient.Send( $message )
    +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : SmtpException
    11 марта 2016 г. 13:04
  • Попробуйте порт: 2525
    11 марта 2016 г. 13:21
    Отвечающий