Как организовать управление группой ПК: различия между версиями

Материал из IT в школе
Перейти к навигацииПерейти к поиску
Строка 1: Строка 1:




Строка 76: Строка 77:


=== Как управлять всеми ПК сразу (при наличии сервера управления) ===
=== Как управлять всеми ПК сразу (при наличии сервера управления) ===
По просьбе, делюсь опытом администрирования ПК МОС. У меня два здания, в каждом имеется свой сервер на Linux (в моем случае ubuntu - просто сервер старше чем МОС, но конкретный дитрибутив не важен).
https://os.mos.ru/git/andreyka648/adminka  
 
На каждом сервере 2 сетевые карты, одна смотрит грубо говоря в сеть Study (но подключено естественно проводом) с фиксированным адресом 172.ххх.ххх.16, Другая - в сеть панелей 10.xxx.xxx.26
 
Сервера маломощные, уровня i3 первого поколения. Два установлены для надежности(чтобы здания были независимы) . На них также работает samba и asterisk, а такжже запись с видеокамер компьютерных классов.
 
На всех ПК прописываем в кронтаб запуск скрипта '''onreboot.sh''' при загрузке.
 
Для этого запускаем от root '''crontab -e''' и добавляем туда С ПЕРЕВОДОМ СТРОКИ В КОНЦЕ (это важно)<syntaxhighlight lang="bash">
@reboot /root/onreboot.sh
 
</syntaxhighlight>чтобы использовать нормальные редактор нужно сначала заменить в файле /etc/bashrc.d/editor.sh vim на mcedit
 
Файл /root/onreboot.sh
 
В приведенной версии файл рассчитан не 2 корпуса.
 
https://os.mos.ru/git/andreyka648/adminka/src/master/onreboot.sh
 
Данный скрипт по hostname вычисляет номер корпуса и тип ПК (панель/ не панель) и по этой информации вычисляет адрес сервера в той сети к которой он подключен
 
Затем скрип ожидает поднятия сетевого интерфейса  и появления устойчивого пинга на сервер.
 
Потом загружает с сервера файл start.sh через скрипт index.php и запускает его.
 
После этого периодически (каждые 60 сек ) загружает и запускает файл reg.sh
 
В файл reg sh я добавляю при необходимости неотложные команды (обычно он пуст)
 
В файл start.sh записаны скрипты инициализации ПК:
 
Ниже приведен пример файла инициализации. ЭТО ПРИМЕР. ОБЯЗАТЕЛЬНО РАЗБЕРИТЕСЬ  ЧТО ТАМ К ЧЕМУ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. в конце концов самое важное - уметь вносить в него изменения в случае если чтото понадобится. 
 
Я стремился создать файл, который САМ НАСТРАИВАЕТ ПК по максимуму от состояния свеже-установленной системы. Возможно не все еще готово, привожу файл как есть. 
 
 
 
Возможно Вам не надо инициализировать систему с нуля , тогда файл может быть сильно сокращен. В него Вы будете вписывать только необходимые текущие изменения и удалять их как только они внесены. 
 
https://os.mos.ru/git/andreyka648/adminka/src/master/start.sh 
 
На сервере размещаем скрипы start.sh и reg.sh  и файл index.php.  Настроена авторизация, чтобы доступ был только у Вас.
 
У меня также установлены webssh и novnc для входа по ssh и vnc непосредственно из браузера.
 
Это удобно - чтото менять можно не только со своего компьютера но и с любого, который оказался под рукой. Кроме того, вход происходит при нажатии ссылки из index.php
 
Правда, WEBSSH И NOVNC несколько доработаны, чтобы не приходилось набирать пароль каждый раз. Когда-нибудь я их выложу :)
 
'''Данная версия index.php предельно упрощена специально для wiki и может содержать ошибки.'''
 
https://os.mos.ru/git/andreyka648/adminka/src/master/index.php
 
Необходимо создать каталог /var/www/html/base/ и дать ему права на доступ от php


[[Категория:Скрипты]]
[[Категория:Скрипты]]
[[Категория:МОС]]
[[Категория:МОС]]

Версия 06:16, 26 февраля 2023






Установить veyon (централизованное управление компьютерным классом)
#!/bin/bash
apt-get -y install pip
pip install paramiko

https://os.mos.ru/git/MOS/mos-comp-kab-setup

Скачиваем, запускаем comp_kab_setup.py

Найти Linux ПК в сети

Поиск осуществляется по наличию открытых портов 22 (ssh) и 631 (cups)

#!/bin/bash
#впишите сюда свою сеть
YOUR_NET="172.xx.xx.0"

nmap -n --stats-every 1s -p 22,631 ${YOUR_NET}/23 | grep -B 5 "631/tcp open" | grep -B 4 "22/tcp  open" | grep 172 | sed 's/Nmap scan report for //' | grep -v Nmap > hosts.txt

Здесь и далее hosts.txt - список адресов (или имен, если Вы уверены что ПК будут найдены по имени) компьютеров

Установить ключи для root доступа по ssh

Доступ по ssh c правами учетной записи администратора запрещен по умолчанию. Тем не менее доступ возможен по ключу. Это значит, что должен быть сгенерирован цифровой ключ (в нашем случае типа ed25519), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому осуществляетяся доступ. Открытая часть включает имя хоста. При подключении происходит сверка соотвествия открытой и закрытой части и имени подключаемого ПК, и при соответствии осуществляется доступ. Чтобы скопировать ключ нужно войти с правами root. Удаленно это не очень просто - комада su требует ввода пароля вручную. Приведенный скрипт решает проблему автоматизации копирования ключей.

перед запуском надо установить sshpass, запустив от root

apt-get -y install sshpass
#!/bin/bash
ssh-keygen -t ed25519
SSHKEY=`cat ${HOME}/.ssh/id_ed25519.pub`
ROOTPASS="12345678"
USER="user"
USERPASS="12345678"
for i in `cat hosts.txt`
do
(sleep 1;echo "${ROOTPASS}";sleep 1; echo "echo \"${SSHKEY}\" >> /root/.ssh/authorized_keys " ; echo exit; sleep 1; echo exit) | sshpass -p ${USERPASS} ssh -tt -oStrictHostKeyChecking=no ${USER}@${i} su -
done

Поменять пароли (или другая команда для группы ПК)

при наличии ssh доступа по ключу к root перед запуском надо установить sshpass, запустив от root

apt-get -y install sshpass
#!/bin/bash

USER="root"
USERPASS="12345678"
for i in $(cat hosts.txt)
do 
ssh -oStrictHostKeyChecking=no root@$i 'chpasswd <<<"${USER}:${USERPASS}"'
#сюда можно добавить и другие команды, например создать пользователя
#ssh root@$i useradd student
#изменять пароль можно только командой сhpasswd, так как команда passwd требует ввода пароля вручную
#ssh root@$i 'chpasswd <<<"student:student"'
#можно также установить нужные программы
#ssh root@$i apt-get -y install yandex-browser veyon spherum 
#ssh root@$i epm --auto play teams skype zoom
done

Как управлять всеми ПК сразу (при наличии сервера управления)

https://os.mos.ru/git/andreyka648/adminka