Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Пинговалка с оповещением на мыло.

Ответить
Настройки темы
PowerShell - Пинговалка с оповещением на мыло.

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Поскольку я не разбираюсь в ПШ, но есть большое желание в этом, прошу помощи.

Есть код:

читать дальше »

$erroractionpreference = "SilentlyContinue"
$a = New-Object -comobject Excel.Application
$a.visible = $True
$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Адрес ПК"
$c.Cells.Item(1,2) = "Статус"
$c.Cells.Item(1,3) = "Имя ПК"

$d = $c.UsedRange
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True
$d.EntireColumn.AutoFit($True)

$intRow = 2

$colComputers = get-content C:\servers.txt
foreach ($strComputer in $colComputers){
$hostname = [System.Net.Dns]::GetHostbyAddress($strcomputer).hostname
$c.Cells.Item($intRow, 1) = $strComputer.ToUpper()
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send($strComputer)
if ($Reply.status –eq "Success") {
$c.Cells.Item($intRow, 2) = "Работает"
} else {
$c.Cells.Item($intRow, 2) = "Не работает"
}
$Reply = ""
$c.Cells.Item($intRow, 3) = "$hostname"
$intRow = $intRow + 1
}
$d.EntireColumn.AutoFit()


Как заставить данный код, отправлять мыло. При том, когда определенный айпишник не работает, и если есть возможность что бы он брал айпишник который не отзывается и вкладывал в тело письма. Заранее большое спасибо.

P.S. как заставить сохранять екселевский файл по определенному пути, что бы не возникало проблем, если скрипт будет запускаться с периодичностью в 30 минут, то за 2 часа он создает и открывает 4 файла, можно ли сделать что бы он правил один файл, с последовательной записью.

Отправлено: 17:08, 27-02-2014

 

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


С отправкой почты разобрался, а вот как сделать что бы вел лог в екселе в одном файле желательно с датой, последовательно записывая их.

Отправлено: 13:13, 28-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 10
Благодарности: 2

Профиль | Отправить PM | Цитировать


Могу предложить следующий скриптик, только запись идет в текстовый файл, что намного удобней, к тому же скрипт с exel будет громоздким и написать и править его гораздо сложнее. Ну а пользоваться этим или нет смотрите сами.
-----------------------------------------------
#берем текущую дату
$date=Get-Date -f "dd.MM.yyyy в H:mm"
#задаем переменную для имени файла в который будут записываться результаты за текущий день
$name_file=Get-Date -f "dd.MM.yyyy"
#список адресов для пинга
$adreses="yandex.ru",
"rambler.ru",
"111ttt.ru",
"222ttt.ru"
#Если список адресов из файла раскомментировать
#$adreses=Get-Content "C:\Temp\список адресов.txt"

foreach ($adr in $adreses) {

if (!(Test-Connection -Count 2 -Quiet $adr)) {

"адрес $adr недоступен $date" >> "c:\Temp\$name_file.txt"

}

}

Отправлено: 13:22, 09-03-2014 | #3


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


а отправить e-mail можно приблизительно следующим кодом
Код: Выделить весь код
$smtpServer = "smtp server"
$smtpFrom = "from address"
$smtpTo = "to address"
$messageSubject = "Subject"
$body = Get-mailboxDatabaseCopyStatus|out-string

send-mailmessage -from "$fromaddress" -to "$toAddress" -subject "$messageSubject" -body "$body" -smtpServer "$smtpserver

Отправлено: 13:41, 12-03-2014 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


$erroractionpreference = "SilentlyContinue"
$a = New-Object -comobject Excel.Application
$a.visible = $True
$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Адрес ПК"
$c.Cells.Item(1,2) = "Статус"
$c.Cells.Item(1,3) = "Имя ПК"

$d = $c.UsedRange
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True
$d.EntireColumn.AutoFit($True)

$intRow = 2

$colComputers = get-content C:\servers.txt
foreach ($strComputer in $colComputers){
$hostname = [System.Net.Dns]::GetHostbyAddress($strcomputer).hostname
$c.Cells.Item($intRow, 1) = $strComputer.ToUpper()
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send($strComputer)
if ($Reply.status –eq "Success") {
$c.Cells.Item($intRow, 2) = "Работает"

} else {

$c.Cells.Item($intRow, 2) = "Не работает"
$EmailFrom = 'mail.ru'
$EmailTo = '*@sms.ru
$Subject = "Не работает хост $hostname"
$Body = "IP: $strcomputer"
$SMTPServer = 'smtp.mail.ru'
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object Net.NetworkCredential("*@mail.ru", "*****");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
$c.Cells.Item($intRow, 2) = "Не работает"
}
$Reply = ""
$c.Cells.Item($intRow, 3) = "$hostname"
$intRow = $intRow + 1

$d.EntireColumn.AutoFit()


Вот что получилось, она отправляет смс все как положено, но только выполняется разово, без интервала. И все таки не сохраняет ексель, помогите пожалуйста задать интервал времени пинга и что бы писался лог в екселе.

Еще очень бы хотелось его заставить что бы он например делал пинг, ожидал, снова пинг, снова ждал минуту, и контрольный пинг, после чего отправлял смс о том что сервер не доступен.
Суть в том что например в момент пинга железо может находиться в ребуте. и хотелось бы избежать лишних смс.

Отправлено: 08:56, 20-03-2014 | #5


Ветеран


Сообщения: 542
Благодарности: 35

Профиль | Сайт | Отправить PM | Цитировать


[почти offtop]
Много делал поделок такого рода, начиная от оповещений еще на пейджер, звонков на стационарный, смс на сотовsй и емейл. Но вобщем, лучше всех работает система, когда потерявшие интернет юзеры очень оперативно звонят на мобилу.

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 09:40, 20-03-2014 | #6


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Просто бывает когда юзеров нет в помещении.

Отправлено: 12:41, 21-03-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Пинговалка с оповещением на мыло.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Пингер с оповещением SMS или на E-Mail alex_cent Сетевые технологии 6 04-09-2013 10:42
E8400 на i7 930 шило на мыло? WiZ_LV Процесcоры 5 14-08-2010 10:46
FreeBSD - Оповещения на мыло руту Аlchemist Общий по FreeBSD 1 02-09-2008 23:25
скрипт формы отправки на мыло Denis Shutka Вебмастеру 1 10-01-2005 02:57
Текст для Чата на сайте. Если можно то на мыло kiro Вебмастеру 1 26-05-2003 11:05




 
Переход