Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Операционные системы -> Windows -> Почтовый робот своими руками


Почтовый робот своими руками

Системные администраторы -- народ переборчивый. Одни любят маленькие утилиты и командные файлы, другие предпочитают сложные корпоративные приложения. Кто-то без промедления приступает к изучению очередного обновления какого-нибудь Resource Kit, а кто-то, волею судьбы перебравшись на платформу Windows, никак не может расстаться со своим Unix-прошлым. Однако никто из них наверняка не откажется познакомиться с новой технологией или идеей, способной повысить эффективность труда или упростить решение определенных задач. Надеемся, в сегодняшнем материале они также найдут для себя кое-что интересное.

Почтовые роботы -- это программы, выполняющие определенные действия в ответ на получение электронных писем. В мире Unix они применяются испокон веку, однако в Windows все еще остаются диковинкой -- пересчитать их можно буквально по пальцам, при этом одни не бесплатны, другие созданы под конкретный почтовый сервер.

Рис. 1. Различные каналы доставки почтовому роботу сообщений с командами
Поскольку почтовые роботы фактически используются (не считая совсем банальных случаев) для удаленного управления компьютером, у многих наверняка возникнет вопрос о целесообразности их создания и применения. Действительно, в настоящее время наблюдается расцвет программных средств и даже онлайновых служб, позволяющих дистанционно получить полный контроль над вашим компьютером, однако существуют ситуации и задачи, для которых использовать подобные решения неэффективно или вообще невозможно. Несмотря на то что почтовые роботы, безусловно, не являются альтернативой таким универсальным инструментам, в некоторых случаях они вполне удобны, а иногда попросту незаменимы:

  • как правило, оформить и отправить письмо проще и быстрее, чем установить полноценную сессию с удаленным компьютером;
  • даже если в настоящий момент в вашем распоряжении лишь мобильный телефон, вы сможете воспользоваться SMS;
  • при нестабильности или высокой загрузке канала связи традиционное удаленное управление может превратиться в сущее мучение;
  • почтовые роботы также хороши как резервный способ администрирования в случае отказа некоторых системных служб;
  • как правило, организация удаленного управления требует открытия дополнительных портов брандмауэра, что не всегда приветствуется, онлайновые же службы, хоть и обходятся одним HTTP, не бесплатны.
Таким образом, почтовый робот вполне заслуживает того, чтобы стать еще одним инструментом в арсенале системного администратора -- применяемым по ситуации, но от этого не менее полезным.

Что касается воплощения такого робота в жизнь, то тут стоит, пожалуй, обратить внимание читателя на следующий момент -- опытный системный администратор часто предпочтет отказаться от сторонней утилиты, если ее функциональность хотя бы отчасти дублирует возможности стандартных средств. Гораздо мудрее и надежнее досконально разобраться в уже имеющихся технологиях и инструментах, а при необходимости связывать их друг с другом с помощью командных файлов или скриптов. Именно этот принцип мы и возьмем на вооружение.


Что нам понадобится

Для того чтобы создать простой (с точки зрения реализации, а не возможностей) почтовый робот, понадобится совсем немногое. Прежде всего напомним, что речь идет о платформе Windows, поэтому и выбор программных средств будет соответствующим.

Раз наш робот -- почтовый, то ему, естественно, необходим собственный почтовый ящик, размещенный на сервере, поддерживающем протоколы POP3 и SMTP, -- хоть внутрикорпоративном, хоть публичном вроде mail.ru (в этом случае управляемый компьютер, естественно, должен быть подключен к Интернету). Во избежание путаницы и различных неприятностей этот ящик не рекомендуется использовать ни для каких других целей.

Для получения корреспонденции роботу необходим почтовый клиент, который поддерживал бы работу из командной строки. В каких-то ситуациях можно было бы приспособить, скажем, и Outlook, но в общем случае эта программа -- не лучший вариант. Мы остановим свой выбор на Postie, идеально вписывающейся в постановку задачи.

Общее управление будет осуществлять стандартный планировщик задач Windows -- для наших целей его вполне достаточно. В качестве альтернативы можно рассмотреть программу nnCron, которая, в частности, умеет самостоятельно проверять наличие корреспонденции в указанных почтовых ящиках.


Реализация

Рис. 2. Не поленитесь подробно разобраться с настройками планировщика
Для начала создадим в корневом каталоге диска C: папку Programs, а в ней -- подпапки Postie и MailRobot. В первую установим одноименную утилиту, а во второй заведем еще две подпапки: Archive -- для журнала операций и Commands -- для инструкций роботу.

Далее займемся созданием вспомогательных командных файлов. Первый (!get_msg.bat) будет получать письма из почтового ящика, выделенного роботу, а второй (!send_msg.bat) -- отправлять результаты выполнения команд по указанному адресу. Тексты обоих приведены в листингах, в каждом случае используется только один вызов postie, однако программе необходимо передать правильные параметры (в нашем примере предполагается применение mail.ru) -- подробности вы найдете в документации.

Обратите также внимание, что !get_msg.bat удаляет очередное письмо с сервера, а его содержимое сохраняет в файле !in_mail.bat. В свою очередь, !send_msg.bat предполагает наличие файла !out_mail.txt с результатами выполнения команд.

Теперь создадим основной командный файл !proceed.bat, который будет работать по следующему алгоритму:
  1. Получать сообщение из почтового ящика, выделенного роботу, и сохранять его в командном файле.
  2. Делать в журнале соответствующую пометку, содержащую текущие время и дату, а также текст команды.
  3. Выполнять командный файл, полученный на шаге 1, и результаты его работы также заносить в журнал.
  4. Отправлять специальный файл с результатами работы на ваш (либо любой другой указанный) адрес, а после -- удалять его.
Дополнительно мы добавили команды, проверяющие наличие старых рабочих файлов и при необходимости уничтожающие их. По-скольку этот набор из трех командных файлов фактически и есть сам почтовый робот, разместим его в папке MailRobot.

Собственно, все, что нам осталось, -- настроить планировщик задач, чтобы он ежеминутно запускал созданный нами на предыдущем шаге командный файл !proceed.bat. Не забудьте указать пользователя, от имени которого будет выполняться задание, и его пароль.


За дело

На этом создание почтового робота фактически завершено. Теперь достаточно направить на его адрес письмо, в теле которого следует разместить любые допустимые команды операционной системы или вызовы программ. Чтобы получить результаты их выполнения, необходимо перенаправлять консольный вывод в файл !out_mail.txt (при последовательном выполнении нескольких команд не забудьте использовать >> вместо >).

Однако при непосредственном применении почтового робота ввод команд вручную непрактичен -- это не очень удобно, кроме того, велик риск допустить ошибку. Скорее всего, вам редко понадобится передавать роботу такие команды, которые нельзя предусмотреть и определить заранее, поэтому мы рекомендуем создать набор полезных командных файлов и разместить их в папке Commands.

Например, иногда очень полезно просто проверить, что компьютер находится в рабочем состоянии. Для этого вполне подойдет файл hi.bat, содержащий одну строку:

echo "Robot Response - ALL OK!" > !out_mail.txt

Теперь необходимо лишь отправить роботу письмо всего с двумя буквами hi и дождаться его ответа.

А что делать, если вы уехали в командировку и забыли выключить компьютер? Ваш почтовый робот и здесь придет на помощь. Для этого понадобится файл sh.bat с командой:

shutdown -s

Напоследок предложим чуть менее тривиальный пример, перезапускающий определенную системную службу. Командный файл rsfw.bat с таким содержимым

REM Restart Firewall Service
net stop "Microsoft Firewall" >
!out_mail.txt
net start "Microsoft Firewall" >> !out_mail.txt


имеет непосредственное практическое значение, которое оценят администраторы, знакомые с Microsoft ISA Server: зачастую только таким образом можно решить проблемы с правилами публикации сервера. А если доступ к нему с помощью службы Remote Desktop невозможен, то без почтового робота просто не обойтись.

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


О безопасности

Итак, наш почтовый робот уже полнофункционален, он получает команды, возвращает результаты их исполнения и ведет подробную исто-рию своей работы. Однако ему недоста-ет чего-то такого, о чем опытный системный администратор подумает в первую очередь. Действительно, созданный нами почтовый робот не имеет никаких механизмов защиты -- ни от человека, намеренно пытающегося исполнить на нашем компьютере свои команды, ни даже от банального спама, который, попав в почтовый ящик, будет также воспринят роботом как руководство к действию.

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

Для решения этой задачи можно предложить два очень простых, но довольно эффективных варианта, основанных на фильтрации корреспонденции:

  • специальная сигнатура или пароль в теме письма;
  • "белый" список адресатов, от которых допускается принимать корреспонденцию.
Оба варианта, конечно, имеют свои плюсы и минусы и, в принципе, могут применяться совместно.

Еще одним потенциально уязвимым местом при работе с почтовым роботом является ваш собственный почтовый ящик, откуда осуществляется отправка команд. В данном случае рекомендации также вполне традиционны -- надежно удаляйте копии отправленных роботу писем (в том числе выполняя, когда возможно, операции "сжатия" почтовых папок). Также следует иметь в виду, что ваши письма могут быть просмотрены на внутрикорпоративном почтовом сервере. Из этих соображений вполне разумно использовать для отправки команд онлайновую службу, доступную через Web-интерфейс и поддерживающую безопасное соединение, или ваш личный мобильный телефон и SMS.

И последняя, наиболее общая, рекомендация: если вы серьезно заботитесь о безопасности, то одной из главных ее составляющих всегда было, есть и будет обеспечение конфиденциальности жизненно важной информации -- не посвящайте никого в детали реализации вашего робота, тогда наверняка у вас будет меньше головной боли.


Дальнейшее развитие

Рассмотрев такой простой, но потенциально довольно мощный механизм удаленного управления компьютером, читатель наверняка обнаружит недостатки представленной в данной статье реализации и сможет предложить методы ее совершенствования. Впрочем, чтобы заинтересовать наиболее широкую аудиторию, от начинающих пользователей ПК до умудренных опытом системных администраторов, несколько наиболее интересных и перспективных мы предложим прямо сейчас.

Безопасность. Несмотря на свою кажущуюся простоту, используемый почтовый клиент postie поддерживает PGP -- пожалуй, самый популярный инструмент обеспечения персональной конфиденциальности. С его помощью можно реализовать шифрование отправляемых писем/команд, чтобы никто даже не догадался об их содержании, либо просто применять цифровую подпись в качестве средства аутентификации.

Удобство использования. Набирать команды в SMS-сообщении достаточно неудобно. Читатели, знакомые с языком JAVA и обладающие мобильными телефонами с J2ME (а сейчас практически все новые модели, независимо от ценового диапазона, поддерживают эту платформу), могут попробовать свои силы в написании мидлета, который представлял бы собой оболочку для отправки заготовленных команд -- что-то вроде "мобильной консоли удаленного управления".

Возможности. Реализация почтового робота в виде набора командных файлов существенно отражается на его функциональности. Если же вместо них использовать, скажем, сценарии на Windows Scripting Host, то возможности робота станут практически безграничными. В таком случае можно будет не просто выполнять простые команды, но и обеспечивать взаимодействие со сложными программными комплексами -- как вам, например, такое: запросить через SMS у корпоративной АСУП объем полученной фирмой прибыли за текущий день?

Компоненты почтового робота

!get_msg.bat

\programs\postie\postie -host:pop.mail.ru -user:mailrobot -pass:password

-msg:1 -file:commands\!in_mail.bat -extract --rm


!send_msg.bat

\programs\postie\postie -host:smtp.mail.ru -from:mailrobot@mail.ru

-to:user@mail.ru -file:commands\!out_mail.txt


!proceed.bat

:start

if not exist commands\!in_mail.bat goto :no_old_mail

del commands\!in_mail.bat


:no_old_mail


if not exist commands\!out_mail.txt goto :no_old_send_mail

del commands\!out_mail.txt


:no_old_send_mail


call !get_msg.bat


if not exist commands\!in_mail.bat goto :no_new_mail


echo NEW COMMAND ARRIVED >> archive\archive.txt

echo Time stamp: ------------------- >> archive\archive.txt

date /t >> archive\archive.txt

time /t >> archive\archive.txt


echo Command data: ----------------- >> archive\archive.txt

type commands\!in_mail.bat >> archive\archive.txt


echo Command output: --------------- >> archive\archive.txt


cd commands

call !in_mail.bat >> ..\archive\archive.txt

cd ..


echo ------------------------------- >> archive\archive.txt


if not exist commands\!out_mail.txt goto :no_new_send_mail


call !send_msg.bat

del commands\!out_mail.txt


:no_new_send_mail


goto :start


:no_new_mail

Автор: Вячеслав Колдовский
Источник: www.itc.ua

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.