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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м
Строка 2: Строка 2:
 
|name=Терминальный доступ к UNIX-системе с помощью Jabber
 
|name=Терминальный доступ к UNIX-системе с помощью Jabber
 
|mentor=Яковлев Виктор
 
|mentor=Яковлев Виктор
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}
+
|mentor_login={{URLENCODE:Vyacovlev|WIKI}}
 
|semester=Весна 2015
 
|semester=Весна 2015
 
|course=1
 
|course=1

Версия 00:46, 3 января 2015

Ментор Яковлев Виктор
Учебный семестр Весна 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. Пользователи и группы

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

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

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

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

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

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