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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Яковлев Виктор
Учебный семестр Весна 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. Знание или желание изучить устройство UNIX

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

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

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

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

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

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

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

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

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

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

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