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

Материал из IT в школе
Перейти к навигацииПерейти к поиску
м
 
(не показаны 54 промежуточные версии 2 участников)
Строка 1: Строка 1:
Установить veyon (централизованное управление компьютерным классом)
<syntaxhighlight lang="bash">
#!/bin/bash
apt-get -y install pip
pip install paramiko
</syntaxhighlight>https://os.mos.ru/git/MOS/mos-comp-kab-setup
Скачиваем, запускаем comp_kab_setup.py
Альтернатиыный вариант для ТОЛЬКО для установки veyon на MOS12
также заполняет поле макадреса, что дает возможность использоват WOL<syntaxhighlight lang="bash">
sudo dnf in comp-cab-setup
</syntaxhighlight>
потом запустить comp-cab-setup
или
<syntaxhighlight lang="bash">
#!/bin/bash
#настройка veyon запуск от root (вход от root без пароля root: "sudo su -" ) на компе учителя
# должен быть файл /root/hosts.txt со списком имен компов c расширением local вида
# m648-2-119-1.local
#все компы учеников должны быть в сети (проверки этого нет)
# на компах учеников должны быть пользователи student
# на компе учителя пользователь teacher, вход в veyon
#осуществляется из под него и с его паролем (пользователь должен иметь непустой пароль!)
#название кабинета
CAB=41
#пользователь с правами на sudo на компе ученика
USER=admin
#пароль пользователя с правами на sudo на компе ученика
USERPASS=""
config_teacher()
{
if [ ! -f ${HOME}/.ssh/id_ed25519.pub ]; then
ssh-keygen -f ${HOME}/.ssh/id_ed25519 -q -t ed25519 -N ""
fi
rm ${HOME}/myconfig.json
rm ${HOME}/teacher_public_key.pem
dnf -y install veyon sshpass
veyon-cli authkeys delete teacher/private;
veyon-cli authkeys delete teacher/public;
veyon-cli authkeys create teacher;
veyon-cli authkeys setaccessgroup teacher/private teacher;
veyon-cli authkeys export teacher/public ${HOME}/teacher_public_key.pem;
veyon-cli config set Authentication/Method 1
veyon-cli config set NetworkObjectDirectory/Plugin {14bacaaa-ebe5-449c-b881-5b382f952571}
veyon-cli networkobjects clear
veyon-cli networkobjects add location ${CAB};
for i in $(cat ${HOME}/hosts.txt);
do
ping -c 1 $i > /dev/null
MAC=`arp $i | grep -v dress  | awk '{print $3}'`
veyon-cli networkobjects add computer $i $i ${MAC} ${CAB};
done;
veyon-cli config export ${HOME}/myconfig.json;
veyon-cli service restart
}
config_student()
{
echo IP ${IP}
SSHKEY=`cat ${HOME}/.ssh/id_ed25519.pub`
ANS=`sshpass -p 1 ssh -l root ${IP} echo accessok`
if [ -z "${ANS}" ]; then
(sleep 1;echo "${USERPASS}";sleep 1; echo "echo \"${SSHKEY}\" >> ${HOME}/.ssh/authorized_keys " ; echo exit; sleep 1; echo exit) | sshpass -p ${USERPASS} ssh -tt -oStrictHostKeyChecking=no ${USER}@${IP} sudo su
fi
scp ${HOME}/teacher_public_key.pem root@${IP}:${HOME}/
scp ${HOME}/myconfig.json root@${IP}:${HOME}/
ssh -l root ${IP} dnf -y install veyon-core
ssh -l root ${IP} veyon-cli authkeys delete teacher/public;
ssh -l root ${IP} veyon-cli authkeys import teacher/public ${HOME}/teacher_public_key.pem
ssh -l root ${IP} veyon-cli config import ${HOME}/myconfig.json
ssh -l root ${IP} veyon-cli service restart
}
config_teacher
for i in $(cat ${HOME}/hosts.txt);
do
IP=${i}
config_student
done;
reboot
</syntaxhighlight>




=== Найти Linux ПК в сети ===
=== Найти Linux ПК в сети ===
Поиск осуществляется по наличию открытых портов 22 (ssh) и 631 (cups)<syntaxhighlight lang="bash">
Поиск осуществляется по наличию открытых портов 22 (ssh) и 631 (cups)<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
#впишите сюда свою сеть
YOUR_NET="172.xx.xx.0"


nmap -n --stats-every 1s -p 22,631 172.xx.xx.0/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
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
</syntaxhighlight>hosts.txt - список имен или адресов компьютеров
</syntaxhighlight>Здесь и далее hosts.txt - список адресов (или имен, если Вы уверены что ПК будут найдены по имени) компьютеров


=== Установить ключи для root доступа по ssh ===
=== Установить ключи для root доступа по ssh ===
Доступ по ssh c правами учетной записи администратора запрещен по умолчанию. Тем не менее доступ возможен по ключу. Это значит, что должен быть сгенерирован цифровой ключ (в нашем случае типа ed25519), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому  осуществляется доступ. Открытая часть включает имя хоста. При подключении происходит сверка соответствия открытой и закрытой части и имени подключаемого ПК, и при соответствии осуществляется доступ. Чтобы скопировать ключ нужно войти с правами root. Удаленно это не очень просто - команда su требует ввода пароля вручную. Приведенный скрипт решает проблему автоматизации копирования ключей.
перед запуском надо установить sshpass, запустив от root
<syntaxhighlight lang="bash">
apt-get -y install sshpass
</syntaxhighlight>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
ssh-keygen -t ed25519
ssh-keygen -t ed25519
SSHKEY=`cat ${HOME}/.ssh/ed_id22519.pub`
SSHKEY=`cat ${HOME}/.ssh/id_ed25519.pub`
ROOTPASS="12345678"
ROOTPASS="12345678"
USER="user"
USER="user"
PASS="12345678"
USERPASS="12345678"
for i in `cat hosts.txt`
for i in `cat hosts.txt`
do
do
(sleep 1;echo ${ROOTPASS};sleep 1; echo "${SSHKEY}" >> /root/.ssh/autorized_hosts ; echo exit; sleep 1; echo exit) | sshpass -p ${USERPASS} ssh -oStrictHostKeyChecking=no ${USER}@${i} su -
(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
done
</syntaxhighlight>
</syntaxhighlight>


=== Поменять пароли ===
=== Поменять пароли (или другая команда для группы ПК) ===
при наличии ssh доступа по ключу к root
при наличии ssh доступа по ключу к root
перед запуском надо установить sshpass, запустив от root
<syntaxhighlight lang="bash">
apt-get -y install sshpass
</syntaxhighlight>


hosts.txt - список имен или адресов компьютеров<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash


USER="root"
USER="root"
PASS="12345678"
USERPASS="12345678"
for i in $(cat hosts.txt); do ssh -oStrictHostKeyChecking=no root@$i 'chpasswd <<<"${USER}:${PASS}"'; done
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
</syntaxhighlight>
</syntaxhighlight>
=== Как управлять всеми ПК сразу (при наличии сервера управления) ===
https://os.mos.ru/git/andreyka648/adminka
[[Участник:Kekaloav]]
[[Категория:Скрипты]]
[[Категория:МОС]]
[[Категория:FAQ]]

Текущая версия на 21:55, 20 сентября 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

Альтернатиыный вариант для ТОЛЬКО для установки veyon на MOS12

также заполняет поле макадреса, что дает возможность использоват WOL

sudo dnf in comp-cab-setup

потом запустить comp-cab-setup или

#!/bin/bash

#настройка veyon запуск от root (вход от root без пароля root: "sudo su -" ) на компе учителя
# должен быть файл /root/hosts.txt со списком имен компов c расширением local вида
# m648-2-119-1.local
#все компы учеников должны быть в сети (проверки этого нет)
# на компах учеников должны быть пользователи student
# на компе учителя пользователь teacher, вход в veyon 
#осуществляется из под него и с его паролем (пользователь должен иметь непустой пароль!)

#название кабинета
CAB=41
#пользователь с правами на sudo на компе ученика
USER=admin
#пароль пользователя с правами на sudo на компе ученика
USERPASS=""


config_teacher()
{
if [ ! -f ${HOME}/.ssh/id_ed25519.pub ]; then
ssh-keygen -f ${HOME}/.ssh/id_ed25519 -q -t ed25519 -N ""
fi
rm ${HOME}/myconfig.json
rm ${HOME}/teacher_public_key.pem
dnf -y install veyon sshpass
veyon-cli authkeys delete teacher/private; 
veyon-cli authkeys delete teacher/public; 
veyon-cli authkeys create teacher; 
veyon-cli authkeys setaccessgroup teacher/private teacher; 
veyon-cli authkeys export teacher/public ${HOME}/teacher_public_key.pem; 
veyon-cli config set Authentication/Method 1
veyon-cli config set NetworkObjectDirectory/Plugin {14bacaaa-ebe5-449c-b881-5b382f952571}
veyon-cli networkobjects clear
veyon-cli networkobjects add location ${CAB}; 
for i in $(cat ${HOME}/hosts.txt); 
do 
ping -c 1 $i > /dev/null
MAC=`arp $i | grep -v dress  | awk '{print $3}'`
veyon-cli networkobjects add computer $i $i ${MAC} ${CAB}; 
done; 
veyon-cli config export ${HOME}/myconfig.json;
veyon-cli service restart
}

config_student()
{
echo IP ${IP}
SSHKEY=`cat ${HOME}/.ssh/id_ed25519.pub`
ANS=`sshpass -p 1 ssh -l root ${IP} echo accessok`
if [ -z "${ANS}" ]; then
(sleep 1;echo "${USERPASS}";sleep 1; echo "echo \"${SSHKEY}\" >> ${HOME}/.ssh/authorized_keys " ; echo exit; sleep 1; echo exit) | sshpass -p ${USERPASS} ssh -tt -oStrictHostKeyChecking=no ${USER}@${IP} sudo su
fi
scp ${HOME}/teacher_public_key.pem root@${IP}:${HOME}/ 
scp ${HOME}/myconfig.json root@${IP}:${HOME}/ 
ssh -l root ${IP} dnf -y install veyon-core 
ssh -l root ${IP} veyon-cli authkeys delete teacher/public; 
ssh -l root ${IP} veyon-cli authkeys import teacher/public ${HOME}/teacher_public_key.pem 
ssh -l root ${IP} veyon-cli config import ${HOME}/myconfig.json 
ssh -l root ${IP} veyon-cli service restart
}


config_teacher
for i in $(cat ${HOME}/hosts.txt); 
do 
IP=${i}
config_student
done; 
reboot


Найти 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


Участник:Kekaloav