|
|
Строка 1: |
Строка 1: |
| | |
|
| |
|
|
| |
|
Строка 89: |
Строка 90: |
|
| |
|
| Файл /root/onreboot.sh | | Файл /root/onreboot.sh |
|
| |
|
| |
|
| |
|
| В приведенной версии файл рассчитан не 2 корпуса. | | В приведенной версии файл рассчитан не 2 корпуса. |
Строка 110: |
Строка 109: |
| Ниже приведен пример файла инициализации. ЭТО ПРИМЕР. ОБЯЗАТЕЛЬНО РАЗБЕРИТЕСЬ ЧТО ТАМ К ЧЕМУ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. в конце концов самое важное - уметь вносить в него изменения в случае если чтото понадобится. | | Ниже приведен пример файла инициализации. ЭТО ПРИМЕР. ОБЯЗАТЕЛЬНО РАЗБЕРИТЕСЬ ЧТО ТАМ К ЧЕМУ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. в конце концов самое важное - уметь вносить в него изменения в случае если чтото понадобится. |
|
| |
|
| Я стремился создать файл, который САМ НАСТРАИВАЕТ ПК по максимуму от состояния свежеустановленной системы. Возможно не все еще готово, привожу файл как есть. | | Я стремился создать файл, который САМ НАСТРАИВАЕТ ПК по максимуму от состояния свеже-установленной системы. Возможно не все еще готово, привожу файл как есть. |
| | |
| Возможно Вам не надо инициализировать систему с нуля , тогда файл может быть сильно сокращен. В него Вы будете вписывать только необходимые текущие изменения и удалять их как только они внесены. <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
| | https://os.mos.ru/git/andreyka648/adminka/src/master/start.sh |
| 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
| |
|
| |
|
| | | На сервере размещаем скрипы start.sh и reg.sh и файл index.php. Настроена авторизация, чтобы доступ был только у Вас. |
| 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 непосредственно из браузера. | | У меня также установлены webssh и novnc для входа по ssh и vnc непосредственно из браузера. |
Строка 626: |
Строка 123: |
| Это удобно - чтото менять можно не только со своего компьютера но и с любого, который оказался под рукой. Кроме того, вход происходит при нажатии ссылки из index.php | | Это удобно - чтото менять можно не только со своего компьютера но и с любого, который оказался под рукой. Кроме того, вход происходит при нажатии ссылки из index.php |
|
| |
|
| Правда, WEBSSH И NOVNC несколько доработаны, чтобы не приходилось набирать пароль каждый раз. Когданибудь я их выложк :) | | Правда, WEBSSH И NOVNC несколько доработаны, чтобы не приходилось набирать пароль каждый раз. Когда-нибудь я их выложу :) |
|
| |
|
| '''Данная версия index.php предельно упрощена специально для wiki и может содержать ошибки.''' | | '''Данная версия index.php предельно упрощена специально для wiki и может содержать ошибки.''' |
Строка 634: |
Строка 131: |
| Необходимо создать каталог /var/www/html/base/ и дать ему права на доступ от php | | Необходимо создать каталог /var/www/html/base/ и дать ему права на доступ от php |
|
| |
|
|
| |
|
| |
| Вопросы? kekalo@mail.ru
| |
| [[Категория:Скрипты]] | | [[Категория:Скрипты]] |
| [[Категория:МОС]] | | [[Категория:МОС]] |
Установить 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
Как управлять всеми ПК сразу (при наличии сервера управления)
По просьбе, делюсь опытом администрирования ПК МОС. У меня два здания, в каждом имеется свой сервер на Linux (в моем случае ubuntu - просто сервер старше чем МОС, но конкретный дитрибутив не важен).
На каждом сервере 2 сетевые карты, одна смотрит грубо говоря в сеть Study (но подключено естественно проводом) с фиксированным адресом 172.ххх.ххх.16, Другая - в сеть панелей 10.xxx.xxx.26
Сервера маломощные, уровня i3 первого поколения. Два установлены для надежности(чтобы здания были независимы) . На них также работает samba и asterisk, а такжже запись с видеокамер компьютерных классов.
На всех ПК прописываем в кронтаб запуск скрипта onreboot.sh при загрузке.
Для этого запускаем от root crontab -e и добавляем туда С ПЕРЕВОДОМ СТРОКИ В КОНЦЕ (это важно)
@reboot /root/onreboot.sh
чтобы использовать нормальные редактор нужно сначала заменить в файле /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