Skip to content

Автоопределение преподавателя и ученика (прочитать первым)

Определяющая особенность cc-class в том, что вы устанавливаете один и тот же пакет на каждую машину. После установки каждая машина сама определяет, является ли она «преподавателем» или «учеником» — администраторам не нужно делать ничего разного для каждой машины.

Решение основано лишь на одном: имени компьютера (hostname).

1. Правило: какие имена считаются «преподавателем»

Машина считается преподавателем, если её имя компьютера совпадает с любым из перечисленного ниже (без учёта регистра); в противном случае она считается учеником.

  1. Содержит ключевое слово преподавателя: имя включает teacher, jiaoshi, laoshi или китайское 老师.
    • например, teacher-01, JiaoShi, lab1-老师
  2. Содержит метку преподавателя -t / _t: отдельная t, ограниченная так, что символ перед ней — -, _ или начало строки, а символ после неё — -, _, цифра или конец строки.
    • Совпадает: pc-t, lab-t-01, room1-t2, PC001-T
    • Не срабатывает ошибочно на: -test (за t следует e), team (за t следует e), host-time (за t следует i)
Для технических специалистов: точное правило

Метка преподавателя сопоставляется регулярным выражением (^|[-_])t([-_]|[0-9]|$) (после приведения к нижнему регистру). Установщик Windows (installer.nsi) и демон Linux (StudentService) содержат идентичную логику, поэтому приложение преподавателя, приложение ученика и установщик всегда согласованы.

Рекомендуемое именование

РольПример имени компьютераПримечание
Преподавательteacher, teacher-01, PC-T, PC001-Tключевое слово или метка -t
УченикPC001, PC002, stu-01, room1-15обычное имя, без метки преподавателя

Простейшая схема

Назовите машину преподавателя PC001-T (заканчивается на -T), а учеников — PC002, PC003, … Демонстрационная среда этого руководства использует именно это: преподаватель PC001-T, ученики PC002 и PC003.

2. Приоритет имени облачного рабочего стола (важно)

Многие лаборатории используют решения облачного рабочего стола / бездисковые (IDV/VOI), где множество машин загружаются из одного образа, поэтому имя хоста ОС может быть одинаковым на всех машинах. Чтобы справиться с этим, cc-class определяет имя следующим образом:

  1. Сначала читает «имя компьютера облачного рабочего стола», переданное платформой:
    • Linux: из устройства /dev/vdchardev;
    • Windows: из устройства \\.\vddsk.
  2. Только если это устройство отсутствует / нечитаемо / пусто, выполняется откат к имени хоста ОС.

Иными словами: имя облачного рабочего стола > имя хоста ОС. В среде облачного рабочего стола задавайте облачное имя компьютера машины (например, PC001-T) на платформе управления — а не только имя хоста ОС.

Распространённая ловушка

Если имя хоста ОС — PC001-T (выглядит как преподаватель), но переданное облачное имя — PC001 (ученик), cc-class использует облачное имя PC001 и считает машину учеником, поэтому приложение преподавателя отказывается запускаться. При устранении неполадок доверяйте «имени компьютера облачного рабочего стола».

3. К чему приводит решение (автоматическое поведение)

Если машина является…TeacherAppStudentAppЯрлык на рабочем столе
Преподавателемзапускается нормальноавтоматически завершается (приложение ученика не работает на преподавателе)создаётся только значок Преподаватель
Ученикомпоказывает «не машина преподавателя, не запустится»работает и автоматически подключается к преподавателюне создаёт значок на рабочем столе (рабочий стол остаётся чистым)
  • Приложение ученика тихо завершается на машине преподавателя (возвращает 0, без помех).
  • Приложение преподавателя предупреждает и завершается на машине ученика. В экстренных случаях можно добавить флаг командной строки --no-host-check, чтобы пропустить проверку (см. FAQ).

4. Ярлыки на рабочем столе: автоматически, без ручной работы

Вы не создаёте значки вручную. cc-class обрабатывает их в зависимости от роли и очищает любые оставшиеся значки неверной роли:

  • Машина преподавателя: на рабочий стол помещается значок cc-class Преподаватель.
    • В Linux демон ученика StudentService пересоздаёт его при каждой загрузке на основе имени облачного рабочего стола и автоматически устанавливает metadata::trusted в GNOME, чтобы значок не отображался как «недоверенный запуск приложения» (из-за чего двойной щелчок не работал бы).
    • В Windows установщик создаёт …-Teacher.lnk на основе имени компьютера.
  • Машина ученика: никакого значка на рабочем столе (запись по-прежнему существует в меню приложений для устранения неполадок).

Фактический результат в демонстрационной среде (проверка папок рабочего стола):

text
# Teacher PC001-T desktop: has the teacher icon
~/Desktop/cc-class-teacher.desktop

# Student PC002 / PC003 desktops: empty (no cc-class icon)
(none)

Изменили имя компьютера?

Просто перезагрузите. При загрузке демон заново оценивает роль с новым именем и пересоздаёт/очищает значок на рабочем столе — полностью автоматически.

5. Схема принятия решения

                ┌─────────────────────────────┐
                │  Чтение «облачного имени»     │
                │  Linux:   /dev/vdchardev     │
                │  Windows: \\.\vddsk          │
                └──────────────┬──────────────┘
              не пусто │ иначе откат
                ┌──────────────▼──────────────┐
                │   Использовать имя хоста ОС   │
                └──────────────┬──────────────┘

        имя содержит teacher / jiaoshi / laoshi / 老师
        или метку преподавателя -t / _t?
                       ┌───────┴───────┐
                    да │               │нет
                ┌──────▼──────┐ ┌──────▼──────┐
                │ Преподаватель│ │   Ученик    │
                │ запуск преп. │ │ запуск учен.│
                │ создать знач.│ │ нет значка  │
                └─────────────┘ └─────────────┘

Далее выберите вашу платформу 👉 Установка на WindowsУстановка на Linux