|
|
(не показано 17 промежуточных версий этого же участника) |
Строка 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"> |
|
| |
|
| =====Установить veyon (централизованное управление компьютерным классом)=====
| | sudo dnf in comp-cab-setup |
| | </syntaxhighlight> |
| | потом запустить comp-cab-setup |
| | или |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| | |
| #!/bin/bash | | #!/bin/bash |
| apt-get -y install pip
| | |
| pip install paramiko
| | #настройка 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 |
| | } |
|
| |
|
|
| |
|
| </syntaxhighlight>https://os.mos.ru/git/MOS/mos-comp-kab-setup | | config_teacher |
| | for i in $(cat ${HOME}/hosts.txt); |
| | do |
| | IP=${i} |
| | config_student |
| | done; |
| | reboot |
| | </syntaxhighlight> |
| | |
|
| |
|
| Скачиваем, запускаем comp_kab_setup.py
| |
| === Найти Linux ПК в сети === | | === Найти Linux ПК в сети === |
|
| |
|
Строка 28: |
Строка 107: |
|
| |
|
| === Установить ключи для root доступа по ssh === | | === Установить ключи для root доступа по ssh === |
| Доступ по ssh c правами учетной записи администратора запрещен по умолчанию. Тем не менее доступ возможен по ключу. Это значит, что должен быть сгенерирован цифровой ключ (в нашем случае типа ed25519), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому осуществляетяся доступ. Открытая часть включает имя хоста. При подключении происходит сверка соотвествия открытой и закрытой части и имени подключаемого ПК, и при соответствии осуществляется доступ. Чтобы скопировать ключ нужно войти с правами root. Удаленно это не очень просто - комада su требует ввода пароля вручную. Приведенный скрипт решает проблему автоматизации копирования ключей. | | Доступ по ssh c правами учетной записи администратора запрещен по умолчанию. Тем не менее доступ возможен по ключу. Это значит, что должен быть сгенерирован цифровой ключ (в нашем случае типа ed25519), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому осуществляется доступ. Открытая часть включает имя хоста. При подключении происходит сверка соответствия открытой и закрытой части и имени подключаемого ПК, и при соответствии осуществляется доступ. Чтобы скопировать ключ нужно войти с правами root. Удаленно это не очень просто - команда su требует ввода пароля вручную. Приведенный скрипт решает проблему автоматизации копирования ключей. |
|
| |
|
| перед запуском надо установить sshpass, запустив от root | | перед запуском надо установить sshpass, запустив от root |
Строка 74: |
Строка 153: |
|
| |
|
| === Как управлять всеми ПК сразу (при наличии сервера управления) === | | === Как управлять всеми ПК сразу (при наличии сервера управления) === |
| По просьбе, делюсь опытом администрирования ПК МОС. У меня два здания, в каждом имеется свой сервер на 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 корпуса.<syntaxhighlight lang="bash">
| |
| #!/bin/bash
| |
| | |
| SCHOOL=`hostname | awk -F "-" '{print $1}' `
| |
| KORP=`hostname | awk -F "-" '{print $2}' `
| |
| TYPE=${SCHOOL:0:1}
| |
| | |
| if [ "${KORP}" == "1" ] ; then
| |
| SERVER=172.xxx.xxx.xxx
| |
| NET=172.xxx
| |
| if [ "${TYPE}" == "p" ]; then
| |
| SERVER=10.xxx.xxx
| |
| NET=10.xxx.xxx
| |
| fi
| |
| fi
| |
| if [ "${KORP}" == "2" ] ; then
| |
| SERVER=172.xxx.xxx.xxx
| |
| NET=172.xxx
| |
| if [ "${TYPE}" == "p" ]; then
| |
| SERVER=10.xxx.xxx.xxx
| |
| NET=10.xxx.xxx
| |
| fi
| |
| fi
| |
| UP=`ifconfig | grep -A2 ${NET} | grep UP`
| |
| while [ -z "${UP}" ]
| |
| do
| |
| echo TEST UP
| |
| UP=`ifconfig | grep -A2 ${NET} | grep UP`
| |
| sleep 10
| |
| done
| |
| PING=`ping -c 10 ${SERVER} | grep " 0% "`
| |
| while [ ! -z ${PING} ]
| |
| do
| |
| echo TEST PING
| |
| PING=`ping -c 10 ${SERVER} | grep " 0% "`
| |
| done
| |
| rm /tmp/start.sh
| |
| wget -O /tmp/start.sh http://${SERVER}/index.php?start=`hostname`
| |
| bash /tmp/start.sh
| |
| while true
| |
| do
| |
| wget -O /tmp/reg.sh http://${SERVER}/index.php?reg=`hostname`
| |
| bash /tmp/reg.sh
| |
| echo "wait 60"
| |
| sleep 60
| |
| done
| |
| </syntaxhighlight>Данный скрипт по hostname вычисляет номер корпуса и тип ПК (панель/ не панель) и по этой информации вычисляет адрес сервера в той сети к которой он подключен
| |
| | |
| Затем скрип ожидает поднятия сетевого интерфейса и появления устойчивого пинга на сервер.
| |
| | |
| Потом загружает с сервера файл start.sh через скрипт index.php и запускает его.
| |
| | |
| После этого периодически (каждые 60 сек ) загружает и запускает файл reg.sh
| |
| | |
| В файл reg sh я добавляю при необходимости неотложные команды (обычно он пуст)
| |
| | |
| В файл start.sh записаны скрипты инициализации ПК:
| |
| | |
| Ниже приведен пример файла инициализации. ЭТО ПРИМЕР. ОБЯЗАТЕЛЬНО РАЗБЕРИТЕСЬ ЧТО ТАМ К ЧЕМУ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. в конце концов самое важное - уметь вносить в него изменения в случае если чтото понадобится.
| |
| | |
| Я стремился создать файл, который САМ НАСТРАИВАЕТ ПК по максимуму от состояния свежеустановленной системы. Возможно не все еще готово, привожу файл как есть.
| |
| | |
| Возможно Вам не надо инициализировать систему с нуля , тогда файл может быть сильно сокращен. В него Вы будете вписывать только необходимые текущие изменения и удалять их как только они внесены. <syntaxhighlight lang="bash">
| |
| #!/bin/bash
| |
| | |
| #start.sh
| |
| | |
| | |
| #насройка системы запуска по расширению (xdg) так, чтобы в первую очередь вызывался libreoffice и только потом P7
| |
| set_mime()
| |
| {
| |
| #mime om libreofuice
| |
| if [ ! -f /etc/xdg/local/mimeapps.list ]; then
| |
| mkdir /etc/xdg/local
| |
| echo 'XDG_CONFIG_DIRS="/etc/xdg/local:$XDG_CONFIG_DIRS"' > /etc/profile.d/00-local.sh
| |
| chmod +x /etc/profile.d/00-local.sh
| |
| cp /etc/xdg/mos/mimeapps.list /etc/xdg/local/
| |
| sed -i '/^#.\+$/d' /etc/xdg/local/mimeapps.list
| |
| sed -i 's/onlyoffice-desktopeditors.desktop;//g' /etc/xdg/local/mimeapps.list
| |
| sed -i 's/r7-office-desktopeditors.desktop;//g' /etc/xdg/local/mimeapps.list
| |
| sed -i '/^application\/vnd/ s/$/r7-office-desktopeditors.desktop;onlyoffice-desktopeditors.desktop;/' /etc/xdg/local/mimeapps.list
| |
| sed -i '/^text\/csv/ s/$/r7-office-desktopeditors.desktop;onlyoffice-desktopeditors.desktop;/' /etc/xdg/local/mimeapps.list
| |
| sed -i '/^application\/rtf/ s/$/r7-office-desktop;onlyoffice-desktopeditors.desktop;/' /etc/xdg/local/mimeapps.list
| |
| sed -i '/^application\/msword/ s/$/r7-office-desktop;onlyoffice-desktopeditors.desktop;/' /etc/xdg/local/mimeapps.list
| |
| fi
| |
| }
| |
| | |
| | |
| #установка 0 тайиаута при загрузке. Защита от очень "умных" детей - чтобы они не вошли в отладочную консоль. перестраховка, которая иногда мешает мне самому
| |
| set_grub_timeout0()
| |
| {
| |
| #grub disable timeout
| |
| sed -i -r 's/^#*(GRUB_TIMEOUT=).*/GRUB_TIMEOUT=0/' /etc/sysconfig/grub2
| |
| sed -i -r 's/^#*(GRUB_HIDDEN_TIMEOUT=).*/GRUB_HIDDEN_TIMEOUT=$GRUB_TIMEOUT/' /etc/sysconfig/grub2
| |
| grub-mkconfig -o /boot/grub/grub.cfg
| |
| }
| |
| | |
| #установка crontab для отключения компьютера в 22:00 и 7:00 - чтобы компы и доски не оставались вкоюченными на ночь
| |
| #также устанавливает запуск onreboot.sh после перезагрузки
| |
| set_shutdown()
| |
| {
| |
| if [ -z "`crontab -l | grep shutdown`" ]; then
| |
| echo -e "@reboot /root/onreboot.sh\n0 22 * * * /sbin/shutdown now\n0 7 * * * /sbin/shutdown now\n" | crontab -u root -
| |
| fi
| |
| }
| |
| | |
| | |
| | |
| # разные донстройки KDE для пользователя ${USR}, включая блокировку (перевод в ro) некоторых настроечных файлов при установке LOCK=1
| |
| set_kde()
| |
| {
| |
| | |
| #set some flags
| |
| FD=`cat /home/${USR}/.config/plasma-org.kde.plasma.desktop-appletsrc | grep alphaSort`
| |
| if [ "${FD}" == "" ]; then
| |
| sed -i '/^favoritesPortedToKAstats=.*/i alphaSort=true\nlimitDepth=true\nshowIconsRootLevel=true' /home/${USR}/.config/plasma-org.kde.plasma.desktop-appletsrc
| |
| fi
| |
| | |
| #отключение масштаба
| |
| if [ -z "`cat /home/${USR}/.config/kwinrc | grep 'zoomEnabled=false'`" ]; then
| |
| echo -e "[Plugins]\nzoomEnabled=false\n" >> /home/${USR}/.config/kwinrc
| |
| fi
| |
| | |
| #отключить засыпание
| |
| sed -i '/AC\]\[DPMS/,+2d' /home/${USR}/.config/powermanagementprofilesrc
| |
| sed -i '/AC\]\[DimDisp/,+2d' /home/${USR}/.config/powermanagementprofilesrc
| |
| | |
| #блокировка файлов настроек
| |
| cd /home/${USR}/.config/
| |
| for i in plasma-org.kde.plasma.desktop-appletsrc kdeglobals powermanagementprofilesrc systemsettingsrc kcmfonts
| |
| do
| |
| if [ ! -z "${LOCK}" ] ; then
| |
| chown root:${USR} ${i}
| |
| chmod 040 ${i}
| |
| else
| |
| chown ${USR}:${USR} ${i}
| |
| chmod 644 ${i}
| |
| fi
| |
| done
| |
| | |
| }
| |
| | |
| | |
| # восстановление папок teacher_control на рабочем столе ПК из компкласса
| |
| create_veyon_share()
| |
| {
| |
| #создать общую папку
| |
| echo -e "[Desktop Entry]\nIcon=folder-remote\nName=Задания\nType=Application\nExec=dolphin sftp://${USR}:648@${VEYON}/home/share" > "/home/${USR}/Рабочий стол/share.desktop"
| |
| chown ${USR}:${USR} "/home/${USR}/Рабочий стол/share.desktop"
| |
| chmod 744 "/home/${USR}/Рабочий стол/share.desktop"
| |
| #создать каталог сдать работы
| |
| mkdir "/home/${USR}/Рабочий стол/Сдать работы"
| |
| chown ${USR}:${USR} "/home/${USR}/Рабочий стол/Сдать работы"
| |
| }
| |
| | |
| | |
| | |
| #сброс WIFI подключений (для ПК, подключенных проводом)
| |
| clean_wifi()
| |
| {
| |
| #удалить wifi соединения
| |
| rm /etc/NetworkManager/system-connections/Study.MOS.nmconnection
| |
| rm /etc/NetworkManager/system-connections/Study.nmconnection
| |
| }
| |
| | |
| | |
| #Установка Chrome браузером по умолчанию
| |
| # и восстановление иконки на рабочем столе
| |
| setup_chromium()
| |
| {
| |
| #создать хромиум on desktop
| |
| echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nIcon=chromium\nName=Chromium\nType=Application\nExec=chromium" > "/home/${USR}/Рабочий стол/Chromium.desktop"
| |
| chown ${USR}:${USR} "/home/${USR}/Рабочий стол/Chromium.desktop"
| |
| chmod 744 "/home/${USR}/Рабочий стол/Chromium.desktop"
| |
| # Установка Chrome браузером по умолчанию
| |
| if [ ! -f /home/student/.config/mimeapps.list ]; then
| |
| echo -e '#!/usr/bin/env xdg-open\n[Default Applications]\nx-scheme-handler/http=chromium\nx-scheme-handler/https=chromium' > "/home/${USR}/.config/mimeapps.list"
| |
| chown ${USR}:${USR} /home/${USR}/.config/mimeapps.list
| |
| else
| |
| sed -i -r 's/(http=|https=).*/\1chromium/' "/home/${USR}/.config/mimeapps.list"
| |
| fi
| |
| }
| |
| | |
| | |
| #удалеие ненужных файлов по списку
| |
| clean()
| |
| {
| |
| CLN="${CLEAN} /home/teacher/default.png /root/upd.sh /home/${USR}/Рабочий__стол/Chromium home/${USR}/Рабочий_стол/Основы__работы__в__МОС.desktop /home/${USR}/Рабочий__стол/Основы__работы__в__МОС /home/${USR}/Рабочий__стол/yandex-browser.desktop /home/${USR}/Рабочий__стол/mosobrtv.desktop /home/${USR}/Рабочий__стол/Chromium"
| |
| for i in ${CLN}
| |
| do
| |
| NAME="${i//__/ /}"
| |
| echo DELETE $NAME
| |
| rm -f "${NAME}"
| |
| done
| |
| }
| |
| | |
| # установка правильных репозиториев
| |
| check_repo()
| |
| {
| |
| #remove some repos
| |
| if [ -f /etc/apt/sources.list.d/alt.list ] || [ -f /etc/apt/sources.list.d/yandex.list ] || [ -f /etc/apt/sources.list.d/ipsl.list ] || [ -f /etc/apt/sources.list.d/heanet.list ]; then
| |
| rm /etc/apt/sources.list.d/*
| |
| fi
| |
| | |
| | |
| if [ ! -z '`cat /etc/apt/sources.list.d/mos-base-repo.list | grep "#"`' ] || [ ! -f '/etc/apt/sources.list.d/mos-base-repo.list' ]; then
| |
| echo -e "rpm http://repo.os.mos.ru/a/p10/base/release x86_64 classic\nrpm http://repo.os.mos.ru/a/p10/base/release x86_64-i586 classic\nrpm http://repo.os.mos.ru/a/p10/base/release noarch classic\n" > /etc/apt/sources.list.d/mos-base-repo.list
| |
| fi
| |
| | |
| | |
| if [ ! -z '`cat /etc/apt/sources.list.d/mos-repo.list | grep "#"`' ] || [ ! -f '/etc/apt/sources.list.d/mos-repo.list' ]; then
| |
| echo -e "rpm http://repo.os.mos.ru/a/p10/mos/release x86_64 hasher\nrpm http://repo.os.mos.ru/a/p10/mos/release noarch hasher\nrpm http://repo.os.mos.ru/a/p10/mos/release x86_64-i586 hasher\n" > /etc/apt/sources.list.d/mos-repo.list
| |
| fi
| |
| }
| |
| | |
| | |
| #обновление
| |
| update()
| |
| {
| |
| check_repo
| |
| remove-old-kernels -f
| |
| apt-get update
| |
| apt-get -y dist-upgrade
| |
| update-kernel -f
| |
| apt-get clean
| |
| }
| |
| | |
| | |
| #установка фона рабочего стола 648.png с сервера
| |
| setup_wallpaper()
| |
| {
| |
| if [ ! -f /etc/648.png ]; then
| |
| wget -O /etc/648.png http://${SERVER}/648.png
| |
| fi
| |
| if [ -z "`cat /home/${USR}/.config/plasma-org.kde.plasma.desktop-appletsrc | grep 648.png`" ]; then
| |
| sed -i 's/^Image=.\+$/Image=\/etc\/648\.png/g' /home/${USR}/.config/plasma-org.kde.plasma.desktop-appletsrc
| |
| fi
| |
| }
| |
| | |
| | |
| #настройка vnc пароль - password можно поменять
| |
| setup_x11vnc()
| |
| {
| |
| if [ ! -f /root/vnc/passwd ]; then
| |
| /sbin/chkconfig x11vnc on
| |
| /sbin/service x11vnc start
| |
| mkdir /root/.vnc/
| |
| x11vnc --storepasswd password /root/.vnc/passwd
| |
| fi
| |
| }
| |
| | |
| #проверка налисчия и установка/удаление недостающих пакетов по списку из переменной
| |
| setup_pkt()
| |
| {
| |
| remove-old-kernels -y
| |
| apt-get -y remove ${REMOVE}
| |
| for i in ${INSTALL}
| |
| do
| |
| echo INSTALL ${i} ?
| |
| if [ -z "`rpm -qa | grep -e \"${i}-[0-9]\" `" ] ; then
| |
| echo INSTALL ${i} !
| |
| apt-get -y install ${INSTALL}
| |
| else
| |
| echo ALREADY INSTALLED
| |
| fi
| |
| done
| |
| | |
| for i in ${INSTALLEPM}
| |
| do
| |
| echo INSALLEPM ${i} ?
| |
| if [ ! -f "/usr/bin/${i}" ] ; then
| |
| echo INSALLEPM ${i} !
| |
| NAME="$(echo $i | tr '[A-Z]' '[a-z]')"
| |
| epm play --auto ${NAME}
| |
| else
| |
| echo ALREADY INSTALLED
| |
| fi
| |
| done
| |
| }
| |
| | |
| | |
| | |
| #включение снхронизации времени СО СВОИМ СЕРВЕРОМ (нужно установить на сервере ntp)
| |
| setup_timesync()
| |
| {
| |
| if [ -f /etc/systemd/timesyncd.conf ]; then
| |
| if [ -z "`cat /etc/systemd/timesyncd.conf | grep ${SERVER}`" ] ; then
| |
| echo "NTP=${SERVER}" >> /etc/systemd/timesyncd.conf
| |
| systemctl enable systemd-timesyncd
| |
| systemctl restart systemd-timesyncd
| |
| fi
| |
| fi
| |
| }
| |
| | |
| | |
| | |
| | |
| | |
| | |
| # причисление пользователя к vboxusers (разрешение запуска virtualbox)
| |
| vbox_user()
| |
| {
| |
| USER="$1"
| |
| | |
| if [ -z "`cat /etc/group | grep vboxusers`" ] ; then
| |
| return
| |
| fi
| |
| | |
| if [ -z "`cat /etc/group | grep vboxusers | grep ${USER}`" ] ; then
| |
| usermod -a -G vboxusers ${USER}
| |
| fi
| |
| }
| |
| | |
| #установка стороннего libreoffice с официального сайта. файл lo.tar.gz на сервере перепакован с двух файлов, скаченных с сайта libreoffice (base и ru)
| |
| | |
| setup_lo()
| |
| {
| |
| if [ ! -h /usr/bin/libreoffice ]; then
| |
| ln -s /opt/libreoffice7.5/program/soffice /usr/bin/libreoffice
| |
| fi
| |
| | |
| mv /usr/share/applications/libreoffice7.5-base.desktop /usr/share/applications/base.desktop
| |
| mv /usr/share/applications/libreoffice7.5-calc.desktop /usr/share/applications/calc.desktop
| |
| mv /usr/share/applications/libreoffice7.5-draw.desktop /usr/share/applications/draw.desktop
| |
| mv /usr/share/applications/libreoffice7.5-impress.desktop /usr/share/applications/impress.desktop
| |
| mv /usr/share/applications/libreoffice7.5-math.desktop /usr/share/applications/math.desktop
| |
| mv /usr/share/applications/libreoffice7.5-writer.desktop /usr/share/applications/writer.desktop
| |
| mv /usr/share/applications/libreoffice7.5-startcenter.desktop /usr/share/applications/startcenter.desktop
| |
| mv /usr/share/applications/libreoffice7.5-xsltfilter.desktop /usr/share/applications/xsltfilter.desktop
| |
| | |
| | |
| | |
| if [ -d /opt/libreoffice7.5 ]; then
| |
| return
| |
| fi
| |
| cd /tmp
| |
| rm lo.tar.gz
| |
| wget http://${SERVER}/lo.tar.gz
| |
| tar xvf lo.tar.gz
| |
| apt-get -y install /tmp/RPMS/*.rpm
| |
| rm lo.tar.gz
| |
| rm -rf /tmp/RPMS/
| |
| for USR in ${USERS}
| |
| do
| |
| rm -rf /home/${USR}/.config/.libreoffice
| |
| done
| |
| }
| |
| | |
| | |
| #установка стороннего blender (в репе на момент написания 2.9, сторонний 3.4)
| |
| | |
| setup_bl()
| |
| {
| |
| if [ -d /opt/blender* ]; then
| |
| return
| |
| fi
| |
| cd /opt
| |
| rm bl.tar.xz
| |
| wget http://${SERVER}/bl.tar.xz
| |
| tar xvf bl.tar.xz
| |
| rm bl.tar.xz
| |
| CAT="`ls /opt/ | grep blender`"
| |
| cp /opt/${CAT}/blender.desktop /usr/share/applications/blender.desktop
| |
| rm /usr/bin/blender
| |
| ln -s /opt/${CAT}/blender /usr/bin/blender
| |
| }
| |
| | |
| | |
| | |
| #запускается для панелей
| |
| | |
| | |
| setup_panel()
| |
| {
| |
| echo "*****************************************"
| |
| echo "*****************PANEL*******************"
| |
| echo "*****************************************"
| |
| | |
| | |
| REMOVE="apt-indicator cheese"
| |
| INSTALL="yandex-browser-stable kde5-kamerka guvcview x11vnc-service"
| |
| EPM=""
| |
| | |
| update
| |
| setup_timesync
| |
| set_mime
| |
| setup_pkt
| |
| setup_x11vnc
| |
| set_shutdown
| |
| | |
| for USR in ${USERS}
| |
| do
| |
| echo user ${USR}
| |
| clean
| |
| set_kde
| |
| setup_wallpaper
| |
| #добавление в список папок дельфина общей папки для панелей, расшаренной на сервере
| |
| sed -i /nas648/,/bookmark/d /home/${USR}/.local/share/user-places.xbel
| |
| TT=`cat /home/teacher/.local/share/user-places.xbel | grep "${SERVER}"`
| |
| if [ "${TT}" == "" ]; then
| |
| echo -e "<bookmark href=\"smb://boards:boards@${SERVER}/boards\">\n<title>\nОбщая папка\n</title>\n</bookmark>" > /tmp/add.txt
| |
| sed -i '/<\/xbel>/{
| |
| r /tmp/add.txt
| |
| a <\/xbel>
| |
| d
| |
| }' /home/${USR}/.local/share/user-places.xbel
| |
| rm /tmp/add.txt
| |
| fi
| |
| done
| |
| }
| |
| | |
| #запускается для ноутбуков
| |
| | |
| setup_note()
| |
| {
| |
| echo "*****************************************"
| |
| echo "*****************NOTE********************"
| |
| echo "*****************************************"
| |
| REMOVE="apt-indicator cheese kernel-modules-e1000e-std-def LibreOffice-common blender openboard"
| |
| INSTALL="yandex-browser-stable kde5-kamerka xorg-96dpi guvcview x11vnc-service systemd-timesyncd"
| |
| INSTALLEPM="zoom teams skype sferum Telegram viber tamtam"
| |
| update
| |
| set_mime
| |
| setup_lo
| |
| setup_bl
| |
| setup_pkt
| |
| setup_x11vnc
| |
| setup_timesync
| |
| #блокирока обновление hplip
| |
| if [ -z "`cat /etc/apt/apt.conf.d/hold-hplip.conf | grep hplip`" ] ; then
| |
| echo 'RPM::Hold { ^hplip; };' > /etc/apt/apt.conf.d/hold-hplip.conf
| |
| fi
| |
| for USR in ${USERS}
| |
| do
| |
| echo user ${USR}
| |
| #clean
| |
| #set_kde
| |
| done
| |
| }
| |
| | |
| #запускается для ионоблоков
| |
| | |
| setup_cc()
| |
| {
| |
| echo "****************************************"
| |
| echo "*****************CC*********************"
| |
| echo "****************************************"
| |
| REMOVE="apt-indicator cheese LibreOffice-common blender openboard"
| |
| INSTALL="yandex-browser-stable kde5-kamerka guvcview pinta virtualbox x11vnc-service systemd-timesyncd"
| |
| INSTALLEPM="zoom teams skype sferum Telegram viber tamtam"
| |
| update
| |
| set_mime
| |
| clean
| |
| setup_lo
| |
| setup_bl
| |
| setup_pkt
| |
| setup_x11vnc
| |
| setup_timesync
| |
| if [ ! -z "${TIMEOUT}" ]; then
| |
| set_grub_timeout0
| |
| fi
| |
| setup_wine
| |
| clean_wifi
| |
| set_shutdown
| |
| vbox_user student
| |
| vbox_user teacher
| |
| | |
| | |
| for USR in ${USERS}
| |
| do
| |
| echo user ${USR}
| |
| set_kde
| |
| setup_chromium
| |
| create_veyon_share
| |
| setup_wallpaper
| |
| done
| |
| }
| |
| | |
| #основной скрипт. расшифроввуем hostname
| |
| | |
| HN=`hostname`
| |
| TYPE=${HN:0:1}
| |
| IN=(${HN//-/ })
| |
| CORP=${IN[1]}
| |
| CAB=${IN[2]}
| |
| COMP=${IN[3]}
| |
| | |
| | |
| #выбираем сервер и запускаем скрипт для панелей
| |
| | |
| if [ ${TYPE} == 'p' ] ; then
| |
| USERS="teacher"
| |
| if [ ${CORP} == "1" ] ; then
| |
| SERVER=10.xxx.xxx.26
| |
| setup_panel
| |
| exit
| |
| fi
| |
| if [ ${CORP} == "2" ] ; then
| |
| SERVER=10.xxx.xxx.26
| |
| setup_panel
| |
| exit
| |
| fi
| |
| fi
| |
| | |
| # для компклассов (моноблоков)
| |
| | |
| if [ ${TYPE} == 'm' ] ; then
| |
| LOCK=1
| |
| USERS="student"
| |
| if [ ${CORP} == "1" ] ; then
| |
| SERVER="172.xxx.xxx.16"
| |
| if [ ${CAB} == 'xx' ]; then
| |
| TIMEOUT=0
| |
| VEYON="mxxxx.local"
| |
| setup_cc
| |
| exit
| |
| fi
| |
| if [ ${CAB} == 'xx' ]; then
| |
| TIMEROUT=0
| |
| VEYON="mxxxx.local"
| |
| setup_cc
| |
| exit
| |
| fi
| |
| if [ ${CAB} == 'xx' ]; then
| |
| USERS="student k10a k10b"
| |
| VEYON="mxxxx.local"
| |
| setup_cc
| |
| exit
| |
| fi
| |
| if [ ${CAB} == '34a' ]; then
| |
| VEYON="mxxxx.local"
| |
| setup_cc
| |
| exit
| |
| fi
| |
| fi
| |
| if [ ${CORP} == "2" ] ; then
| |
| SERVER="172.xx.xx.16"
| |
| if [ ${CAB} == 'xx' ]; then
| |
| TIMEOUT=0
| |
| VEYON="mxxxx.local"
| |
| setup_cc
| |
| exit
| |
| fi
| |
| if [ ${CAB} == 'xx' ]; then
| |
| TIMEOUT=0
| |
| VEYON="mxxxx.local"
| |
| setup_cc
| |
| exit
| |
| fi
| |
| fi
| |
| fi
| |
| | |
| # для ноутбуков
| |
| | |
| if [ ${TYPE} == 'n' ] ; then
| |
| USERS='user'
| |
| if [ ${CORP} == "1" ] ; then
| |
| SERVER="172.xx.xx.16"
| |
| setup_note
| |
| exit
| |
| fi
| |
| if [ ${CORP} == "2" ] ; then
| |
| SERVER="172.xx.xx.16"
| |
| setup_note
| |
| exit
| |
| fi
| |
| fi
| |
| | |
| | |
| | |
| </syntaxhighlight>На сервере размещаем скрипы 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
| |
|
| |
|
|
| |
|
| | [[Участник:Kekaloav]] |
|
| |
|
| Вопросы? kekalo@mail.ru
| |
| [[Категория:Скрипты]] | | [[Категория:Скрипты]] |
| [[Категория:МОС]] | | [[Категория:МОС]] |
| | [[Категория:FAQ]] |