Терминальный доступ к UNIX-системе с помощью Jabber (проект)

Материал из Wiki - Факультет компьютерных наук
Версия от 13:17, 10 ноября 2014; Vyacovlev (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Ментор Яковлев Виктор
Учебный семестр Весна 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-робот (в виде клиентской программы), который принимает команды от пользователя и выполняет их на том компьютере, где этот бот запущен. В качестве ответа робот передает текст с потоков вывода и ошибок выполненных команд. В случае разрыва соединения, удаленное выполнение программы не должно прерываться, а результат работы пользователь сможет увидеть после появления подключения к сети.

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

Чему вы научитесь?

  1. Реализация сетевого взаимодействия на верхних уровнях модели OSI
  2. Особенности администрирование UNIX-подобных систем

Какие начальные требования?

  1. Знание языка программирования Python
  2. Знание технического английского (хотя бы со словарем или переводчиком)
  3. Знание или желание изучить устройство UNIX

Какие будут использоваться технологии?

  • Веб-службы Google Talk или Я.Онлайн (требуется учетная запись gmail или yandex)
  • Python-библиотеки для работы с протоколом XMPP (SleekXMPP или pyxmpp2)
  • Низкоуровневые аспекты ОС: процессы, пользователи, группы

Темы вводных занятий

Вводные занятия по курсу операционных систем. В рамках этих занятий будут освещены разделы курса:

  1. Процессы
    1. Типы процессов
    2. Атрибуты процесса
    3. Жизненный путь процесса
    4. Сигналы
  2. Пользователи UNIX
    1. Атрибуты пользователя
    2. Пароли
    3. Пользователи и группы

Направления развития

Можно реализовать поддержку управления запущенными задачами.

Критерии оценки

  • 5 баллов. Реализован сервер, который принимает запросы через протокол Jabber и выполняет команды от имени того пользователя, из под которого запущен сам сервер.
  • 6 баллов. Сервер Поддерживает запуск команд от имени произвольного пользователя в соответствии с указанным в конфигурации соответствием JabberID->login
  • 8 баллов. Сервер поддерживает авторизацию по имени пользователя и паролю

За поддержку управления запущенными командами (остановка процесса, скрытие/отображение ввода) добавляется *1 балл*.

За оформление результата работы в виде системной службы, запускаемой через rc-скрипт добавляется *1 балл*.