02-06-2008 17:25
Возникала ли у вас когда-либо мысль, как правило когда вы сидите на работе, о том, что было бы не плохо выполнить команду на домашней Linux-системе, чтобы получить с нее ту или иную информацию? Я уверен, вы найдете сотни причин, по которым захотите иметь такую возможность.
E-mail не только простой, но еще и весьма мощный инструмент. Однако может ли он быть использован в качестве консоли вашей домашней Linux-системы? Еще как может! Лично я постоянно этим пользуюсь. А почему бы просто не за-login-иться и не выполнить последовательность команд, как это делается обычно? Конечно же можно, однако это будет уже не столь прикольно, да и тогда я уже не смогу сказать, -- "А попробуйте-ка сделать такое в Windows NT!" (Это могло бы быть другим названием этой книги). А кроме того, бывают времена, когда непосредственный доступ к системе невозможен. Однако если e-mail под рукой, то эта глава как раз для вас. Для начала, я покажу как случилось так, что я пришел к разработке e-mail-консоли, а потом объясню как это все работает.
Возможно, вы, как и я, некогда были подключены к Internet с помощью стандартной телефонной линии, пользуясь услугами Internet service provider-а (ISP). Конечно я люблю своего ISP, однако эта зараза лимитирует количество часов в месяц, которые я могу быть online, так мало того, они еще и тянут с меня дополнительные деньги, когда я выхожу за отведенный мне лимит. Тем не менее менять ISP не хочется, так как он, без сомнения, лучший в нашей области. По причине ограниченности времени пребывания в online, я (и думаю, что вы тоже), выбирал определенное время, и быстренько выкачивал e-mail, и необходимые мне файлы. Проблема в том, что мне необходим доступ к моей домашней системе, когда я нахожусь на работе. То есть мне необходимо придумать что-либо такое, чтобы моя домашняя система находилась в offline до тех пор, пока она мне не потребуется, а когда понадобится, то переходила в online, и оставалась в таком состоянии пока я не скажу ей отсоединиться.
И тогда я решил достичь этого периодическим подсоединением моей системы к Internet-у, с последующей загрузкой e-mail с моего ISP, используя весьма приятную программу, называемую Fetchmail. Я написал несколько Perl-скриптов, которые автоматизировали и синхронизировали запросы на соединение для различных программ, таких как например SETI@Home и Fetchmail, -- им обоим было необходимо время от времени иметь соединение с Internet-ом. Помимо этого, иногда мне необходимо было выходить в online, чтобы "погулять" по web, в то время когда система уже отсоединилась после того как отработала утилита Fetchmail. Получение e-mail с помощью утилиты Fetchmail позволило мне расходовать меньше online-времени, экономя на том времени, когда я набираю текст-ответ на полученный e-mail. Зачем тратить online-время в тот момент, когда я набирают ответ? Основной целью этих скриптов было скоординировать запросы на соединение и отсоединение, и удерживать мою систему online, пока это было необходимо.
Тогда до меня "дошло", что если я могу отправлять e-mail на мою систему (которая загружает e-mail каждый час), и если я смогу найти некую программку, которая будет обрабатывать e-mail и исполнять команды, содержащиеся в этом e-mail, то я могу скомандовать своей системе продолжать оставаться online или перейти в offline. Па-да-ба-дам! Теперь все, что мне надо, так это найти чудо-программу, которая будет заниматься разбором e-mail-а и исполнять команды, которые она обнаружила. Решение нашлось прямо под клавиатурой.
Клочок бумажки, под клавиатурой, содержал, записанный мной, перечень утилит, которые, как мне казалось, могли бы быть полезными для работы с e-mail, и Procmail был одной из таких утилит.
Как оказалось, Procmail -- это очень полезная утилита, для осуществления поиска некоторого текста во входящих e-mail, и последующего исполнения некоторого рода действий. Я использовал Procmail, для того, чтобы обрабатывать свои входящие e-mail, каждые 15 минут (я уменьшил период с часа до 15 минут, так как если мне захочется получить доступ, то ждать час, -- это будет через чур), и исполнять команды, которые предписывали бы моей системе оставаться в online после того, как она окончит получать e-mail. Все работало замечательно. Теперь я мог отправить e-mail на мою домашнюю систему с определенной темой, по типу "CONNECT REMOTE", и моя система оставалась в online, после того, как выкачивала и обрабатывала весь e-mail, полученный с ISP. В своем конфигурационном файле Procmail, я предписал искать строку, о которой я говорил выше, и буде такая найдется, исполнять Perl-скрипт, который я написал так, чтобы по его исполнению моя система оставалась в online. Я мог также "сказать" своей системе отсоединиться. Затем случилось так, что я немного повозился, и смог написать Procmail-рецепт и Perl-скрипт, который мог исполнять любую произвольную команду, какую бы я не отправил. Из всего этого получилась наикрутейшая штука из всех, о которых я только слышал, -- любой из моих друзей, работающих на NT, мог только завидовать такой фишке!
Так как кто угодно может отправить мне e-mail, то я переработал протокол так, чтобы он позволял исполнять команды только мне и доверенным лицам, но никому более. Кроме того, я предпринял попытки относительно того, чтобы возвращаемые результаты были безопасными, надежно скрытыми от любителей совать нос в чужие дела. Решение крылось в шифровании (encryption) и цифровой подписи (digital signature), -- этот функционал предоставляется другой превосходной утилитой -- GnuPG (смотрите Главу 10?, Обеспечение безопасности E-Mail с помощью GPG]]).
Теперь, когда вы знаете историю о том, как появилась e-mail-консоль, настало время объединить все части вместе и получить работающую систему. В этом проекте вы будете использовать следующие утилиты:
<< '''Глава 7. E-Mail как системная консоль''' | Multi Tool Linux | Отказ от ответственности >>