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

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



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

Протокол 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-подобных систем

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

1. Знание технического английского языка для чтения документации

2. Знание языка программирования Python

3. Знание или желание изучить систему Linux на уровне системного администратора

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

1. Python-библиотеки для работы с протоколом XMPP (SleekXMPP или pyxmpp2)

2. Низкоуровневые аспекты ОС: процессы, пользователи, группы

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

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

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

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

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

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

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

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

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

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

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

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

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