1003
правки
Kekaloav (обсуждение | вклад) |
Kekaloav (обсуждение | вклад) |
||
(не показаны 43 промежуточные версии 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> | |||
Строка 7: | Строка 100: | ||
Поиск осуществляется по наличию открытых портов 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 | 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), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому | Доступ по ssh c правами учетной записи администратора запрещен по умолчанию. Тем не менее доступ возможен по ключу. Это значит, что должен быть сгенерирован цифровой ключ (в нашем случае типа ed25519), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому осуществляется доступ. Открытая часть включает имя хоста. При подключении происходит сверка соответствия открытой и закрытой части и имени подключаемого ПК, и при соответствии осуществляется доступ. Чтобы скопировать ключ нужно войти с правами root. Удаленно это не очень просто - команда su требует ввода пароля вручную. Приведенный скрипт решает проблему автоматизации копирования ключей. | ||
перед запуском надо установить sshpass, запустив от root | |||
<syntaxhighlight lang="bash"> | |||
apt-get -y install sshpass | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
#!/bin/bash | #!/bin/bash | ||
ssh-keygen -t ed25519 | ssh-keygen -t ed25519 | ||
SSHKEY=`cat ${HOME}/.ssh/ | SSHKEY=`cat ${HOME}/.ssh/id_ed25519.pub` | ||
ROOTPASS="12345678" | ROOTPASS="12345678" | ||
USER="user" | USER="user" | ||
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/ | (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<syntaxhighlight lang="bash"> | при наличии ssh доступа по ключу к root | ||
перед запуском надо установить sshpass, запустив от root | |||
<syntaxhighlight lang="bash"> | |||
apt-get -y install sshpass | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
#!/bin/bash | #!/bin/bash | ||
USER="root" | USER="root" | ||
USERPASS="12345678" | |||
for i in $(cat hosts.txt) | for i in $(cat hosts.txt) | ||
do | do | ||
ssh -oStrictHostKeyChecking=no root@$i 'chpasswd <<<"${USER}:${ | ssh -oStrictHostKeyChecking=no root@$i 'chpasswd <<<"${USER}:${USERPASS}"' | ||
#сюда можно добавить и другие команды, например создать пользователя | #сюда можно добавить и другие команды, например создать пользователя | ||
#ssh root@$i useradd student | #ssh root@$i useradd student | ||
Строка 43: | Строка 151: | ||
done | done | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Как управлять всеми ПК сразу (при наличии сервера управления) === | |||
https://os.mos.ru/git/andreyka648/adminka | |||
[[Участник:Kekaloav]] | |||
[[Категория:Скрипты]] | [[Категория:Скрипты]] | ||
[[Категория:МОС]] | [[Категория:МОС]] | ||
[[Категория:FAQ]] |