imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Программы и Операционные системы > Операционные системы M$
Опции темы
Старый 12.04.2011, 13:24     # 1
Plague
Administrator
 
Аватар для Plague
 
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 026

Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
Уведомление о перезагрузке 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%
несколько комментариев:
  • set blatdir=c:\SystemTools\mailreport - Путь к blat.exe и sleep.exe заменить на свой
  • set smtpserver - некоторые шибко умные провайдеры (мой в том числе) блочат 25 порт, требуя использования своих mx-серверов. Просто на всякий случай напоминаю. Вчера полчаса убил пытаясь понять почему не работает, пока не вспомнил про это.
  • %COMPUTERNAME% - глобальная переменная винды. подставит имя компа.
  • ключи -pu и -ppw в команде - если ваш мыл-сервер требует pop3 аутентификацию. В случае AUTH используем -u и -pw; в случае IMAP - -iu и -ipw соответственно.
  • для чего нужен sleep: Обычно компы перегружаются при бросках электричества. В этом случае, как правило, перегружается и коммуникационное оборудование. Другими словами, интернета может просто не быть еще на тот момент когда комп загрузится. Да и различные сетевые сервисы тоже очень желательно подождать пока прогрузятся на машине, прежде чем в сеть долбиться. В моём скрипте установлено ожидание 600 секунд.

Итак, скрипт есть.
Теперь идем в панель управления - назначенные задания и давим там на "Добавить". Далее - "Обзор" - показываем наш скрипт, после чего выбираем "при загрузке компьютера"; в следующем окне пишем что задание должно выполняться от Администратора, вводим его пасс; ставим галку "установить дополнительные параметры после нажатия готово".
В свойствах задания, в строке "выполнить" перед путём до скрипта дописываем 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 almost already here.
M.M.

Последний раз редактировалось Plague; 12.04.2011 в 15:42. Причина: поправил недочет по подсказке Борланда
Plague вне форума  
Старый 12.04.2011, 15:06     # 2
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 377

Borland - Гад и сволочь
Цитата:
Сообщение от Plague Посмотреть сообщение
Борланд говорил что на Висте и Семерке Про и выше есть что-то своё с аналогичными функциями
Утилита с говорящим названием timeout.
Зато sleep от 2003 сервера не работает на Vista и 7 (во всяком случае - на x64)...
Впрочем, есть и куча "универсальных" sleep под любые мыслимые ОС, накомпилированных добровольцами.
А также и другие методы приостановки выполнения пакетного файла
Но в данном конкретном случае можно было сделать задержку "до появления соединения с SMTP-сервером":
Код:
:INIT
netsh diag connect iphost smtp.сервер.ru 25 || goto INIT
К сожалению, контекст diag из netsh NT6.x убрали, так что решение неуниверсальное, только для XP...
Наиболее универсальным решением, пожалуй, будет банальный ping:
Код:
:INIT
ping -n 2 smtp.сервер.ru || goto INIT
Это практически одинаково отработает на любой ОС. Одно НО: SMTP сервер должен "откликаться" на пинги, иначе эта пауза будет бесконечной...

Замечание:
Цитата:
Сообщение от Plague Посмотреть сообщение
%USERDOMAIN% - глобальная переменная винды. подставит имя компа.
Исключительно для локального пользователя. В сети с доменами будет имя домена, отвечающего за авторизацию пользователя (хотя да, для пользователя SYSTEM это всегда имя локальной машины).
Более правильным всё-таки является использование переменной %COMPUTERNAME%.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий


Последний раз редактировалось Borland; 12.04.2011 в 15:24. Причина: добавка
Borland вне форума  
Старый 12.04.2011, 15:39     # 3
Plague
Administrator
 
Аватар для Plague
 
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 026

Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
Цитата:
Сообщение от Borland Посмотреть сообщение
Более правильным всё-таки является использование переменной %COMPUTERNAME%
согласен, я схватил просто первое что на глаза попалось из вывода команды set.
ща исправлю
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!!
~~~~~~~~~~~~~~~~~~~~~~

The time has come it is quite clear, our antichrist is almost already here.
M.M.
Plague вне форума  
Старый 08.10.2014, 22:29     # 4
Plague
Administrator
 
Аватар для Plague
 
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 026

Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
много воды с тех пор утекло, много еще мы с Борландом понаписали "стукачей" о всяческих эвентах на этой основе.

Цитата:
Сообщение от Plague Посмотреть сообщение
blat не умеет работать с серверами, требующими ssl. Варианты обхода существуют (stunnel), но это лишняя "клюква" на машине, да и не проверял я.
в свете того, что smtp.mail.ru перестал работать с обычным соединением, решил все-таки копнуть эту клюкву.
Итак, качаем 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
по большому счёту, как выяснилось позже, pop3 не нужен, так что секцию mailru-pop3 можно исключить.

Включаем 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 almost already here.
M.M.
Plague вне форума  
Старый 18.02.2015, 21:17     # 5
ccnd
Newbie
 
Регистрация: 09.09.2003
Сообщения: 49

ccnd Путь к славе только начался
Ребят, а не проще реализовать это скриптом, как например ТУТ?
вроде как все стандартное и никакого левого софта на серваке
ccnd вне форума  

Теги (метки)
bat, blat, blat.exe, cmd, email уведомление, stunnel, stunnel.conf, уведомление

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:24.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.