Jabber-Bot для организации терминального доступа к UNIX-системе (проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Яковлев Виктор Вадимович
Учебный семестр Весна 2016
Учебный курс 1-й курс
Максимальное количество студентов, выбравших проект: 8



Аккаунты ментора

Необходимо дать ментору права администратора на свой приватный репозиторий!

BitBucket.org: victor_yacovlev

GitLab.com: v-yacovlev

GitHub.com: victor-yacovlev

Что это за проект?

Протокол Jabber предназначен для мгновенной передачи сообщений (как ICQ, Skype), используется в Google Talk (Hangouts), и Facebook Chat. Jabber-роботом (ботом) является специальный аккаунт в этой сети, сообщения в котором «читает» и «пишет» не человек, а программа. Боты могут быть реализованы как на стороне Jabber-сервера в виде plugin'а, так и в виде обычной клиентской программы, которая, с точки зрения сервера, не отличается от обычного чат-клиента.

Во время формирования ответа, боты могут выполнять какие‑либо побочные действия. Например, бот системы Youtrack (https://www.jetbrains.com/youtrack/) позволяет открывать новые задачи и выполнять действия над существующими задачами с помощью команд, отправляемых в виде сообщений.

Для терминального доступа к UNIX‑подобным системам используется протокол SSH; для доступа к ним из Windows, как правило, используется программа PuTTY. Недостатком такого подхода является, во первых, необходимость в специальной программе для Windows, а во‑вторых, прекращение выполнения команд при обрыве соединения. Последняя проблема обычно решается с помощью программ screen или tmux на стороне сервера, но требует дополнительных действий от пользователя.

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

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

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

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

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

  • Знание технического английского языка для чтения документации
  • Знание языка программирования Python
  • Знание или желание изучить систему Linux на уровне системного администратора

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

  • Python-библиотеки для работы с протоколом XMPP (SleekXMPP или pyxmpp2)
  • Низкоуровневые аспекты ОС: процессы, пользователи, группы

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

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

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

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

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

4: Реализован сервер, который принимает запросы через протокол Jabber и выполняет команды от имени того пользователя, из под которого запущен сам сервер.

6: Сервер Поддерживает запуск команд от имени произвольного пользователя в соответствии с указанным в конфигурации соответствием JabberID->login.

8: Сервер поддерживает авторизацию по имени пользователя и паролю.

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

+1 балл. Интеграция сервера в системное окружение systemd.

+1 балл. Результат работы оформлен в виде пакета rpm или deb.

Ориентировочное расписание занятий

В зависимости от расписания