Терминальный доступ к UNIX-системе с помощью Jabber (проект)
Ментор | Яковлев Виктор |
Учебный семестр | Весна 2015 |
Учебный курс | 1-й курс |
Внимание! Данный проект находится в архиве и реализован не будет. |
Что это за проект?
Jabber
Протокол Jabber предназначен для мгновенной передачи сообщений (как ICQ, Skype), используется в Google Talk (Hangouts), Я.Онлайн и Facebook Chat. Jabber-роботом (ботом) является специальный аккаунт в этой сети, сообщения в котором «читает» и «пишет» не человек, а программа. Боты могут быть реализованы как на стороне Jabber-сервера в виде plugin'а, так и в виде обычной клиентской программы, которая, с точки зрения сервера, не отличается от обычного чат-клиента.
Во время формирования ответа, боты могут выполнять какие‑либо побочные действия. Например, бот системы Youtrack (https://www.jetbrains.com/youtrack/) позволяет открывать новые задачи и выполнять действия над существующими задачами с помощью команд, отправляемых в виде сообщений.
Shell
Для терминального доступа к UNIX‑подобным системам используется протокол SSH; для доступа к ним из Windows, как правило, используется программа PuTTY. Недостатоком такого подхода является, во первых, необходимость в специальной программе для Windows, а во‑вторых, прекращение выполнения команд при обрыве соединения. Последняя проблема обычно решается с помощью программ screen или tmux на стороне сервера, но требует дополнительных действий от пользователя.
Постановка задачи
Требуется реализовать Jabber-робот (в виде клиентской программы), который принимает команды от пользователя и выполняет их на том компьютере, где этот бот запущен. В качестве ответа робот передает текст с потоков вывода и ошибок выполненных команд. В случае разрыва соединения, удаленное выполнение программы не должно прерываться, а результат работы пользователь сможет увидеть после появления подключения к сети.
При реализации необходимо обратить внимание на то, что команды должны запускаться с определенными правами от имени соответствующих пользователей. Реализация той части программы, которая выполняется с привилегированными правами, должна быть сведена к минимуму.
Чему вы научитесь?
- Реализация сетевого взаимодействия на верхних уровнях модели OSI
- Особенности администрирование UNIX-подобных систем
Какие начальные требования?
- Знание языка программирования Python
- Знание или желание изучить устройство UNIX
Какие будут использоваться технологии?
- Веб-службы Google Talk или Я.Онлайн (требуется учетная запись gmail или yandex)
- Python-библиотеки для работы с протоколом XMPP (SleekXMPP или pyxmpp2)
- Низкоуровневые аспекты ОС: процессы, пользователи, группы
Темы вводных занятий
Вводные занятия по курсу операционных систем. В рамках этих занятий будут освещены разделы курса:
- Процессы
- Типы процессов
- Атрибуты процесса
- Жизненный путь процесса
- Сигналы
- Пользователи UNIX
- Атрибуты пользователя
- Пароли
- Пользователи и группы
Направления развития
Можно реализовать поддержку управления запущенными задачами.
Критерии оценки
- 4 балла. Реализован сервер, который принимает запросы через протокол Jabber и выполняет команды от имени того пользователя, из под которого запущен сам сервер.
- 6 баллов. Сервер Поддерживает запуск команд от имени произвольного пользователя в соответствии с указанным в конфигурации соответствием JabberID->login
- 8 баллов. Сервер поддерживает авторизацию по имени пользователя и паролю
За поддержку управления запущенными командами (остановка процесса, скрытие/отображение ввода) добавляется 1 балл.
За оформление результата работы в виде системной службы, запускаемой через rc-скрипт добавляется 1 балл.