imho.ws |
|
|
Сообщения:
Перейти к новому /
Последнее
|
Опции темы |
12.04.2011, 13:24 | # 1 |
Administrator
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 042
|
Уведомление о перезагрузке Windows на email/СМС
Присказка: Произошла тут на выходных неприятность одна: комп на работе ребутнулся (энергетики постарались, козлы: даже ИБП не спас ). В результате некоторые вещи пол-воскресенья работали не совсем так как надо было. Проблемы зайти по удаленному управлению нет, и делов там - три пимпы ткнуть. Проблема в том, что в общем-то, никто не обязан круглые сутки мониторить: чего там у тебя на работе происходит, согласитесь?
Сказка: И озадачился я вчера на тему написания какого-нить скриптика, который при перезагрузке стучал бы о данном происшествии. СМС-шлюзы для частников у мобильных провайдеров когда-то были, но уже давным-давно закрыты, так что всяческие софтины для "халявной отправки СМС" - в лучшем случае не будут работать. В худшем - запустят втихаря в работу на вашей машине что-нить совершенно левое, и к отправке СМС не имеющее никакого отношения. В природе существует консольная утилитка со смешным названием blat Так же, нам понадобится утиль sleep.exe из Windows Server 2003 Resource Kit Tools. Смешно конечно ради одного екзешника весом в 5кб тянуть и ставить кирпич на 11ть метров, но для "ставить" - есть виртуалка, да и помимо sleep там много чего полезного есть, что можно заархивировать и припрятать - мало ли, понадобится... Кроме того, вроде мне Борланд говорил что на Висте и Семерке Про и выше есть что-то своё с аналогичными функциями (не помню, сам допишет может быть). Итак, качаем blat, распаковываем, к нему же кидаем sleep.exe. там же создаем небольшой скриптик blat.cmd Код:
@echo off set blatdir=c:\SystemTools\mailreport set smtpsender=от_кого@сервер.ru set smtpserver=smtp.сервер.ru set smtpport=25 set smtpuser=от_кого set smtppwd="пароль_исходящего_ящика" set mailto=кому@сервер.ru set blatsubj="%COMPUTERNAME% ALERT" set blatbody="%COMPUTERNAME% Rebooted!!" "%blatdir%\sleep.exe" 600 "%blatdir%\blat.exe" -to %mailto% -f %smtpsender% -server %smtpserver% -port %smtpport% -pu %smtpuser% -ppw %smtppwd% -subject %blatsubj% -body %blatbody%
Итак, скрипт есть. Теперь идем в панель управления - назначенные задания и давим там на "Добавить". Далее - "Обзор" - показываем наш скрипт, после чего выбираем "при загрузке компьютера"; в следующем окне пишем что задание должно выполняться от Администратора, вводим его пасс; ставим галку "установить дополнительные параметры после нажатия готово". В свойствах задания, в строке "выполнить" перед путём до скрипта дописываем c:\Windows\System32\cmd.exe /c Код:
c:\Windows\System32\cmd.exe /c c:\SystemTools\mailreport\blat.cmd Совет: для проверок - значение "600" в строке запуска sleep.exe лучше придавить до 10ти, а то упаритесь ждать Если есть необходимость получать СМС о данном событии - регим ящик получателя на мыл-сервисах умеющих отправлять СМС о получении нового письма. mail.ru умеет точно: проверял. Гугль, зараза, не умеет . Так же есть некие сложности с использованием gmail в качестве ящика отправителя: blat не умеет работать с серверами, требующими ssl. Варианты обхода существуют (stunnel), но это лишняя "клюква" на машине, да и не проверял я.
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!! ~~~~~~~~~~~~~~~~~~~~~~ The time has come it is quite clear, our antichrist is M.M.
Последний раз редактировалось Plague; 12.04.2011 в 15:42. Причина: поправил недочет по подсказке Борланда |
12.04.2011, 15:06 | # 2 | |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 418
|
Цитата:
Зато sleep от 2003 сервера не работает на Vista и 7 (во всяком случае - на x64)... Впрочем, есть и куча "универсальных" sleep под любые мыслимые ОС, накомпилированных добровольцами. А также и другие методы приостановки выполнения пакетного файла Но в данном конкретном случае можно было сделать задержку "до появления соединения с SMTP-сервером": Код:
:INIT netsh diag connect iphost smtp.сервер.ru 25 || goto INIT Наиболее универсальным решением, пожалуй, будет банальный ping: Код:
:INIT ping -n 2 smtp.сервер.ru || goto INIT Замечание:Исключительно для локального пользователя. В сети с доменами будет имя домена, отвечающего за авторизацию пользователя (хотя да, для пользователя SYSTEM это всегда имя локальной машины). Более правильным всё-таки является использование переменной %COMPUTERNAME%.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий Последний раз редактировалось Borland; 12.04.2011 в 15:24. Причина: добавка |
|
12.04.2011, 15:39 | # 3 | |
Administrator
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 042
|
Цитата:
ща исправлю
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!! ~~~~~~~~~~~~~~~~~~~~~~ The time has come it is quite clear, our antichrist is M.M.
|
|
08.10.2014, 22:29 | # 4 | |
Administrator
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 042
|
много воды с тех пор утекло, много еще мы с Борландом понаписали "стукачей" о всяческих эвентах на этой основе.
Цитата:
Итак, качаем stunnel, ставим. В процессе установки сервис сгенерит для себя самоподписанный сертификат SSL. Конфиг stunnel.conf для mail.ru Код:
RNDfile = .rnd debug = 7 output = stunnel.log cert = stunnel.pem options = NO_SSLv2 [mailru-smtp] client = yes accept = 127.0.0.1:1125 connect = smtp.mail.ru:465 [mailru-pop3] client = yes accept = 127.0.0.1:1110 connect = pop.mail.ru:995 Включаем stunnel как сервис (чтоб грузился надёжней) Перелопачиваем скрипты: заменяем pop3 авторизацию на AUTH, меняем адрес smtp. Итого, из скрипта приведенного в шапке, получаем: Код:
@echo off set blatdir=c:\SystemTools\mailreport set smtpsender=от_кого@сервер.ru set smtpserver=localhost set smtpport=1125 set smtpuser=от_кого set smtppwd="пароль_исходящего_ящика" set mailto=кому@сервер.ru set blatsubj="%COMPUTERNAME% ALERT" set blatbody="%COMPUTERNAME% Rebooted!!" "%blatdir%\sleep.exe" 600 "%blatdir%\blat.exe" -to %mailto% -f %smtpsender% -server %smtpserver% -port %smtpport% -u %smtpuser% -pw %smtppwd% -subject %blatsubj% -body %blatbody% К слову, документация на stunnel мягко говоря, не блещет подробностями. Я не нашел например, параметра лимита соединений. Но в логе при загрузке оно регулярно ругается на то что он у меня не установлен: Код:
2014.10.06 13:25:15 LOG7[2420]: No limit detected for the number of clients Код:
CAfile = mailru.pem verify = 3 ps. для того чтоб сделать авторизацию на несколько различных мыл-серверов, достаточно просто раскопировать секцию сервера в stunnel.conf, указав для каждого уникальный порт, и стучать соответственно, для каждого в свой порт.
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!! ~~~~~~~~~~~~~~~~~~~~~~ The time has come it is quite clear, our antichrist is M.M.
|
|
Теги (метки) |
bat, blat, blat.exe, cmd, email уведомление, stunnel, stunnel.conf, уведомление |
|
|