From ef7ca4d7f9a14d2b1ca2094083b0c85a9effd444 Mon Sep 17 00:00:00 2001 From: Zhebrikov Date: Tue, 5 Dec 2023 21:49:43 +0900 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20install.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Обновил фунцию обновления системы. Перевел bash вызовы на использование конструкции os.system(). --- install.py | 594 ++++++++++++++++++++++++++--------------------------- 1 file changed, 295 insertions(+), 299 deletions(-) diff --git a/install.py b/install.py index 409d15b..6bac516 100644 --- a/install.py +++ b/install.py @@ -1,300 +1,296 @@ -import subprocess, os -import sys, time -#from colorama import Fore, Style - -#вывод на экран меню работы программы -def display_menu(): - ml_text = """ -\n -************** МЕНЮ: ************************** -0. Инициализация свежей системы и ее обновление. -1. Установить SNAP и SNAP-STORE (стараемся не использовать) -2. Установить FLATPAK и его родное GUI. -3. Установка базового набора пакетов (сеть). -4. Установка Крипто-ПРО и сопуствующих дополнений. -5. Прописка в профиль пользователя сетевых папок (смертным) -6. Прописка в профиль пользователя сетевых папок (избранным) -C. Выполнение произвольной команды bash/sh с отображением вывода. -Q. Завершение работы программы - -""" - print(ml_text) - -#запуск любой консольной bash команды из скрипта Python -def execute_command(command): - result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, universal_newlines=True) - return result.stdout - -#имитация живого ввода текста при выводе его на печать -def live_print(text): - for text_symbol in text: - #Fore.GREEN - sys.stdout.write(text_symbol) - sys.stdout.flush() - time.sleep(0.03) # Задержка между символами - - print() # Переход на новую строку после завершения печати - #Style.RESET_ALL - -#подключение в папку рута, папки ArmInstall -def mount_ArmInstall(): - if os.path.exists('~/ArmInstall'): - live_print("Тэкс... папка ArmInstall у нас есть... \n") - #примонтировать в нее сетевую шару smb://nas/distributiv/ArmAstraInstall/base - live_print("Примонтируем в нее сетевую заначку... \n") - execute_command('mount -t cifs //192.168.2.4/distributiv/ArmAstraInstall ~/ArmInstall -o username=admincsm,password=yacsmQAZ,domain=YACSM,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=1.0 --verbose') - live_print("Готово. \n") - else: - live_print("О! Да у нас тут самое начало пути... \n") - live_print("Создадим папку ArmInstall в папке Бати. \n") - #создаем в папке рута папку ArmInstall - os.mkdir('~/ArmInstall') - live_print("Готово. \n") - live_print("Теперь примонтируем в нее сетевую заначку с пакетами. \n") - # монтируем в нее сетевую шару с пакетами - execute_command('mount -t cifs //192.168.2.4/distributiv/ArmAstraInstall ~/ArmInstall -o username=admincsm,password=yacsmQAZ,domain=YACSM,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=1.0 --verbose') - live_print("Готов и этот шаг. \n") - -#отключение папки ArmInstall -def umount_ArmInstall(): - if os.path.exists('~/ArmInstall'): - execute_command('umount ~/ArmInstall') - execute_command('rm -r ~/ArmInstall') - -#обновление системы до последнего актуального состояния -def update_system(): - #очищаем файл репозиториев - execute_command('> /etc/apt/sources.list') - #вносим в файл репозиториев только то, что нам нужно - execute_command('echo -e "\n# Заблокировать cd и разблокировать остальные, а так же дописать:> /etc/apt/sources.list') - execute_command('echo -e "\n# Astra Linux repository description https://wiki.astralinux.ru/x/0oLiC> /etc/apt/sources.list') - execute_command('echo -e "\n "> /etc/apt/sources.list') - execute_command('echo -e "\n#deb cdrom:[OS Astra Linux 1.7.1 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free"> /etc/apt/sources.list') - execute_command('echo -e "\n# Основной репозиторий> /etc/apt/sources.list') - execute_command('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free"> /etc/apt/sources.list') - execute_command('echo -e "\n "> /etc/apt/sources.list') - execute_command('echo -e "\n# Оперативные обновления основного репозитория"> /etc/apt/sources.list') - execute_command('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free"> /etc/apt/sources.list') - execute_command('echo -e "\n "> /etc/apt/sources.list') - execute_command('echo -e "\n# Базовый репозиторий"> /etc/apt/sources.list') - execute_command('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free"> /etc/apt/sources.list') - execute_command('echo -e "\n "> /etc/apt/sources.list') - execute_command('echo -e "\n# Расширенный репозиторий"> /etc/apt/sources.list') - execute_command('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free"> /etc/apt/sources.list') - execute_command('echo -e "\n "> /etc/apt/sources.list') - execute_command('echo -e "\n# Расширенный репозиторий (компонент astra-ce) - используется при необходимости в установке дополнительного ПО, которое не прошло сертификацию!"> /etc/apt/sources.list') - execute_command('echo -e "\ndeb http://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce"> /etc/apt/sources.list') - #execute_command('> /etc/apt/sources.list') - - execute_command('apt install -y apt-transport-https ca-certificates') - execute_command('apt-get update') - execute_command('apt-get dist-upgrade') - execute_command('apt-get full-upgrade') - execute_command('astra-update -r -A') - - #обновим и установим пакет libc6* - execute_command('apt-get -t install -y libc6') - - #Установим свежие драйвера под интеловские чипы - execute_command('apt-get install -y intel-microcode') - - live_print("Система обновлена. Сейчас делаем перезагрузку для применения результатов. \n") - live_print("После перезагрузки запустите скрипт заново и продолжите установку. \n") - - execute_command('reboot') - -#Установка SNAP в Астра линукс -def install_snap(): - #добавим в список дистрибутивов новый дебиановкий репозиторий - execute_command('echo -e "\ndeb [trusted=yes] https://mirror.yandex.ru/debian/ buster main contrib non-free" >> /etc/apt/sources.list') - execute_command('gpg --keyserver keyserver.ubuntu.com --recv-key 648ACFD622F3D138') - execute_command('gpg -a --export 648ACFD622F3D138 | sudo apt-key add - ') - execute_command('gpg --keyserver keyserver.ubuntu.com --recv-key 0E98404D386FA1D9') - execute_command('gpg -a --export 0E98404D386FA1D9 | sudo apt-key add - ') - execute_command('gpg --keyserver keyserver.ubuntu.com --recv-key DCC9EFBF77E11517') - execute_command('gpg -a --export DCC9EFBF77E11517 | sudo apt-key add - ') - - #обновим списки пакетов - execute_command('apt update') - - #теперь установим snap - execute_command('apt install snapd') - execute_command('sudo ln -s /var/lib/snapd/snap /snap') - execute_command('systemctl enable --now snapd') - - #обновим core у обвязки snap - execute_command('snap refresh core') - execute_command('snap install core') - execute_command('snap install core snapd') - - #следом установим snap-store - execute_command('snap install snap-store') - -#установка FLATPAK в Астра линукс -def install_flatpak(): - #установка flatpak в систему - execute_command('apt install -y flatpack') - #добавляем в систему репозиторий пакетов flatpak - execute_command('flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo') - execute_command('apt install -y plasma-discover-backend-flatpak') - -#установка базового набора ПО для работы пользователей -def install_base_pack_soft(): - print(" \n \n") - ml_text = """ -Сейчас начнется установка базового набора пакетов. -Во время установки пакетов, настоятельно рекомендую отложить какие-либо действия на данном ПК. -Так же рекомендую НЕ производить никаких манипуляций в консоли Linux. -Как писали на экранах классики длинных установок: Откиньтесь на спинку кресла и наслаждайтесь любимым напитком, -пока мы делаем вашу жизнь лугче и лучше. -ПРОСЬБА: Дождаться завершения установки и вывода начального меню программы. \n - """ - live_print(ml_text) - - #примонтируем папку с пакетами установки - mount_ArmInstall() - - if os.path.exists('~/ArmInstall/base'): - # проверить установлены ли уже пакеты из списке и если нет, то ... - # установить набор пакетов который находится в этой папке - live_print("Ну что же, начинаем проверку системы и установку пакетов.... \n") - - #MyChat - if execute_command('dpkg -l | grep mychatclient').strip() != None: - # вернулось пустое значение, значит ставим пакет - live_print("Устанавливаем MyChat... \n") - execute_command('dpkg -i ~/ArmInstall/base/mychatclient-8.14.deb') - live_print("MyChat установлен. \n") - else: - live_print("Пакет MyChat уже установлен, пропускаем... \n") - - #OnlyOffice-desktopeditors - if execute_command('dpkg -l | grep OnlyOffice-desktopeditors').strip() != None: - # вернулось пустое значение, значит ставим пакет - live_print("Устанавливаем OnlyOffice... \n") - execute_command('dpkg -i ~/ArmInstall/base/onlyoffice-desktopeditors-amd64.deb') - live_print("OnlyOffice установлен. \n") - else: - live_print("Пакет OnlyOffice уже установлен, пропускаем... \n") - - #RealVNCServer-5.0.4-amd64.deb - if execute_command('dpkg -l | grep realvnc-vnc-server').strip() != None: - # вернулось пустое значение, значит ставим пакет - live_print("Устанавливаем RealVNC Server... \n") - execute_command('dpkg -i ~/ArmInstall/base/RealVNCServer-5.0.4-amd64.deb') - execute_command('vnclicense -add B6BNH-A4ASK-VCEQC-6Z49E-PCT6A') - live_print("RealVNC Server установлен. \n") - - execute_command('dpkg -i ~/ArmInstall/base/RealVNCViewer-5.0.4-amd64.deb') - else: - live_print("Пакет RealVNC Server уже установлен, пропускаем... \n") - - #yandex-browser-corp - if execute_command('dpkg -l | grep yandex-browser-stable').strip() != None: - # вернулось пустое значение, значит ставим пакет - live_print("Устанавливаем Яндекс.Браузер... \n") - execute_command('dpkg -i ~/ArmInstall/base/yandex-browser-corp.deb') - live_print("Яндекс.Браузер установлен. \n") - else: - live_print("Пакет Яндекс.Браузер уже установлен, пропускаем... \n") - - #1C-Thin-client - if execute_command('dpkg -l | grep 1c-enterprise-8.3.22.2106-thin-client').strip() != None: - # вернулось пустое значение, значит ставим пакет - live_print("Устанавливаем тонкого клиента 1С... \n") - execute_command('dpkg -i ~/ArmInstall/base/1c-thinclient-8.3.22.2106-amd64.deb') - live_print("Тонкий клиент 1С установлен. \n") - else: - live_print("Пакет тонкого клиента 1С уже установлен, пропускаем.... \n") - - # теперь добавим чат и vncserver в автозагрузку - if os.path.exists('/home/admincsm/.config/autostart/mychatclient.desktop') == False : - live_print("Копируем ярлыки автозапуска чата и vnc в автозагрузку.... \n") - execute_command('cp -rT /root/ArmInstall/autostart /home/admincsm/.config/autostart/') - live_print("Автозагрузка прописана. \n") - else: - live_print("В автозагрузку добавлять ничего не надо. Все уже на месте. \n") - - umount_ArmInstall() - -#установка Крипто-ПРО 5 версии. -def install_cryptopro(): - live_print("Приступаем к установке Крипто-ПРО 5.0 \n") - mount_ArmInstall() - execute_command('cd ~/ArmInstall/CryptoPro/cryptopro5-unpacked-amd64') - execute_command('./install_gui.sh') - - live_print("Крипто-ПРО 5.0 установили. \n") - live_print("Теперь приступим к установке Cades-Plugin для работы в браузере. \n") - execute_command('cd ~/ArmInstall/CryptoPro/cades-plugin-amd64') - execute_command('dpkg -i cprocsp-pki-cades-64_2.0.14892-1_amd64.deb') - execute_command('dpkg -i cprocsp-pki-plugin-64_2.0.14892-1_amd64.deb') - live_print("Cades-Plugin для работы в браузере установлен. \n") - - live_print("Теперь не забудь прописать лицензию в КриптоПРО 5 и перезагрузить ПК. \n") - umount_ArmInstall() - -# -def main(): - while True: - live_print("Привет! Добро пожаловать в программу упрощения жизни начинающего Linux админа. \n \n") - - #если запущено не из под рута - шлем в лес! - if int(execute_command('id -u').strip()) != 0: - #print(execute_command('id -u')) - - ml_text = """ -Дружочек, для работы с этой программой тебе требуются права ROOT, которых сейчас у тебя нет. -Программа будет завершена, а тебе настоятельно советую или подтянуть знания, -или убрать свои кривые рученки и обратиться к тем, кому запускать программу можно. \n - """ - live_print(ml_text) - time.sleep(0.15) - live_print("А теперь все исчезнет, как по волшебству.... (ШУТКА!)") - live_print("Пока. \n \n") - break - - #показываем меню выбора - display_menu() - - choice = input("Выберите нужное действие (от 0.. до 4.. или Q и т.д.): \n") - - if choice == "0": - update_system() - - elif choice == "1": - #установим snap - install_snap() - - elif choice == "2": - #установим flatpak - install_flatpak() - - elif choice == "3": - #установка базового пакета софта - install_base_pack_soft() - - elif choice == "4": - #устанавливаем Крипто-ПРО - install_cryptopro() - - elif choice == "5": - print("Тут будет большая функция для прописки в fstab папок монтирования для простых пользователей.") - - elif choice == "6": - print("Тут будет большая функция для прописки в fstab папок монтирования для избранных пользователей.") - - elif choice == "C": - userCommand = input("Введите консольную команду bash/sh с нужными параметрами: \n") - result_execut_command = execute_command(userCommand) - print(result_execut_command) - - elif choice == "Q": - print("До свидания!") - break - - else: - print("Пожалуйста, выберите правильный пункт меню.") - -if __name__ == "__main__": +import subprocess, os +import sys, time +#from colorama import Fore, Style + +#вывод на экран меню работы программы +def display_menu(): + ml_text = """ +\n +************** МЕНЮ: ************************** +0. Инициализация свежей системы и ее обновление. +1. Установить SNAP и SNAP-STORE (стараемся не использовать) +2. Установить FLATPAK и его родное GUI. +3. Установка базового набора пакетов (сеть). +4. Установка Крипто-ПРО и сопуствующих дополнений. +5. Прописка в профиль пользователя сетевых папок (смертным) +6. Прописка в профиль пользователя сетевых папок (избранным) +C. Выполнение произвольной команды bash/sh с отображением вывода. +Q. Завершение работы программы + +""" + print(ml_text) + +#запуск любой консольной bash команды из скрипта Python +def execute_command(command): + result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, universal_newlines=True) + return result.stdout + +#имитация живого ввода текста при выводе его на печать +def live_print(text): + for text_symbol in text: + #Fore.GREEN + sys.stdout.write(text_symbol) + sys.stdout.flush() + time.sleep(0.03) # Задержка между символами + + print() # Переход на новую строку после завершения печати + #Style.RESET_ALL + +#подключение в папку рута, папки ArmInstall +def mount_ArmInstall(): + if os.path.exists('~/ArmInstall'): + live_print("Тэкс... папка ArmInstall у нас есть... \n") + #примонтировать в нее сетевую шару smb://nas/distributiv/ArmAstraInstall/base + live_print("Примонтируем в нее сетевую заначку... \n") + execute_command('mount -t cifs //192.168.2.4/distributiv/ArmAstraInstall ~/ArmInstall -o username=admincsm,password=yacsmQAZ,domain=YACSM,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=1.0 --verbose') + live_print("Готово. \n") + else: + live_print("О! Да у нас тут самое начало пути... \n") + live_print("Создадим папку ArmInstall в папке Бати. \n") + #создаем в папке рута папку ArmInstall + os.mkdir('~/ArmInstall') + live_print("Готово. \n") + live_print("Теперь примонтируем в нее сетевую заначку с пакетами. \n") + # монтируем в нее сетевую шару с пакетами + execute_command('mount -t cifs //192.168.2.4/distributiv/ArmAstraInstall ~/ArmInstall -o username=admincsm,password=yacsmQAZ,domain=YACSM,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=1.0 --verbose') + live_print("Готов и этот шаг. \n") + +#отключение папки ArmInstall +def umount_ArmInstall(): + if os.path.exists('~/ArmInstall'): + execute_command('umount ~/ArmInstall') + execute_command('rm -r ~/ArmInstall') + +#обновление системы до последнего актуального состояния +def update_system(): + #очищаем файл репозиториев + os.system('> /etc/apt/sources.list') + #вносим в файл репозиториев только то, что нам нужно + os.system('echo -e "\n# Заблокировать cd и разблокировать остальные, а так же дописать:" > /etc/apt/sources.list') + os.system('echo -e "\n# Astra Linux repository description https://wiki.astralinux.ru/x/0oLiC" > /etc/apt/sources.list') + os.system('echo -e "\n "> /etc/apt/sources.list') + os.system('echo -e "\n#deb cdrom:[OS Astra Linux 1.7.1 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free" > /etc/apt/sources.list') + os.system('echo -e "\n# Основной репозиторий" > /etc/apt/sources.list') + os.system('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free " > /etc/apt/sources.list') + os.system('echo -e "\n "> /etc/apt/sources.list') + os.system('echo -e "\n# Оперативные обновления основного репозитория" > /etc/apt/sources.list') + os.system('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free" > /etc/apt/sources.list') + os.system('echo -e "\n " > /etc/apt/sources.list') + os.system('echo -e "\n# Базовый репозиторий" > /etc/apt/sources.list') + os.system('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free" > /etc/apt/sources.list') + os.system('echo -e "\n " > /etc/apt/sources.list') + os.system('echo -e "\n# Расширенный репозиторий" > /etc/apt/sources.list') + os.system('echo -e "\ndeb http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free" > /etc/apt/sources.list') + os.system('echo -e "\n " > /etc/apt/sources.list') + os.system('echo -e "\n# Расширенный репозиторий (компонент astra-ce) - используется при необходимости в установке дополнительного ПО, которое не прошло сертификацию!" > /etc/apt/sources.list') + os.system('echo -e "\ndeb http://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce" > /etc/apt/sources.list') + #execute_command('> /etc/apt/sources.list') + + os.system('apt-get install -y apt-transport-https ca-certificates && apt-get update && apt-get dist-upgrade && apt-get full-upgrade && astra-update -r -A') + + #обновим и установим пакет libc6* + os.system('apt-get -t install -y libc6') + + #Установим свежие драйвера под интеловские чипы + os.system('apt-get install -y intel-microcode') + + live_print("Система обновлена. Сейчас делаем перезагрузку для применения результатов. \n") + live_print("После перезагрузки запустите скрипт заново и продолжите установку. \n") + + os.system('reboot') + +#Установка SNAP в Астра линукс +def install_snap(): + #добавим в список дистрибутивов новый дебиановкий репозиторий + execute_command('echo -e "\ndeb [trusted=yes] https://mirror.yandex.ru/debian/ buster main contrib non-free" >> /etc/apt/sources.list') + execute_command('gpg --keyserver keyserver.ubuntu.com --recv-key 648ACFD622F3D138') + execute_command('gpg -a --export 648ACFD622F3D138 | sudo apt-key add - ') + execute_command('gpg --keyserver keyserver.ubuntu.com --recv-key 0E98404D386FA1D9') + execute_command('gpg -a --export 0E98404D386FA1D9 | sudo apt-key add - ') + execute_command('gpg --keyserver keyserver.ubuntu.com --recv-key DCC9EFBF77E11517') + execute_command('gpg -a --export DCC9EFBF77E11517 | sudo apt-key add - ') + + #обновим списки пакетов + execute_command('apt update') + + #теперь установим snap + execute_command('apt install snapd') + execute_command('sudo ln -s /var/lib/snapd/snap /snap') + execute_command('systemctl enable --now snapd') + + #обновим core у обвязки snap + execute_command('snap refresh core') + execute_command('snap install core') + execute_command('snap install core snapd') + + #следом установим snap-store + execute_command('snap install snap-store') + +#установка FLATPAK в Астра линукс +def install_flatpak(): + #установка flatpak в систему + execute_command('apt install -y flatpack') + #добавляем в систему репозиторий пакетов flatpak + execute_command('flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo') + execute_command('apt install -y plasma-discover-backend-flatpak') + +#установка базового набора ПО для работы пользователей +def install_base_pack_soft(): + print(" \n \n") + ml_text = """ +Сейчас начнется установка базового набора пакетов. +Во время установки пакетов, настоятельно рекомендую отложить какие-либо действия на данном ПК. +Так же рекомендую НЕ производить никаких манипуляций в консоли Linux. +Как писали на экранах классики длинных установок: Откиньтесь на спинку кресла и наслаждайтесь любимым напитком, +пока мы делаем вашу жизнь лугче и лучше. +ПРОСЬБА: Дождаться завершения установки и вывода начального меню программы. \n + """ + live_print(ml_text) + + #примонтируем папку с пакетами установки + mount_ArmInstall() + + if os.path.exists('~/ArmInstall/base'): + # проверить установлены ли уже пакеты из списке и если нет, то ... + # установить набор пакетов который находится в этой папке + live_print("Ну что же, начинаем проверку системы и установку пакетов.... \n") + + #MyChat + if execute_command('dpkg -l | grep mychatclient').strip() != None: + # вернулось пустое значение, значит ставим пакет + live_print("Устанавливаем MyChat... \n") + execute_command('dpkg -i ~/ArmInstall/base/mychatclient-8.14.deb') + live_print("MyChat установлен. \n") + else: + live_print("Пакет MyChat уже установлен, пропускаем... \n") + + #OnlyOffice-desktopeditors + if execute_command('dpkg -l | grep OnlyOffice-desktopeditors').strip() != None: + # вернулось пустое значение, значит ставим пакет + live_print("Устанавливаем OnlyOffice... \n") + execute_command('dpkg -i ~/ArmInstall/base/onlyoffice-desktopeditors-amd64.deb') + live_print("OnlyOffice установлен. \n") + else: + live_print("Пакет OnlyOffice уже установлен, пропускаем... \n") + + #RealVNCServer-5.0.4-amd64.deb + if execute_command('dpkg -l | grep realvnc-vnc-server').strip() != None: + # вернулось пустое значение, значит ставим пакет + live_print("Устанавливаем RealVNC Server... \n") + execute_command('dpkg -i ~/ArmInstall/base/RealVNCServer-5.0.4-amd64.deb') + execute_command('vnclicense -add B6BNH-A4ASK-VCEQC-6Z49E-PCT6A') + live_print("RealVNC Server установлен. \n") + + execute_command('dpkg -i ~/ArmInstall/base/RealVNCViewer-5.0.4-amd64.deb') + else: + live_print("Пакет RealVNC Server уже установлен, пропускаем... \n") + + #yandex-browser-corp + if execute_command('dpkg -l | grep yandex-browser-stable').strip() != None: + # вернулось пустое значение, значит ставим пакет + live_print("Устанавливаем Яндекс.Браузер... \n") + execute_command('dpkg -i ~/ArmInstall/base/yandex-browser-corp.deb') + live_print("Яндекс.Браузер установлен. \n") + else: + live_print("Пакет Яндекс.Браузер уже установлен, пропускаем... \n") + + #1C-Thin-client + if execute_command('dpkg -l | grep 1c-enterprise-8.3.22.2106-thin-client').strip() != None: + # вернулось пустое значение, значит ставим пакет + live_print("Устанавливаем тонкого клиента 1С... \n") + execute_command('dpkg -i ~/ArmInstall/base/1c-thinclient-8.3.22.2106-amd64.deb') + live_print("Тонкий клиент 1С установлен. \n") + else: + live_print("Пакет тонкого клиента 1С уже установлен, пропускаем.... \n") + + # теперь добавим чат и vncserver в автозагрузку + if os.path.exists('/home/admincsm/.config/autostart/mychatclient.desktop') == False : + live_print("Копируем ярлыки автозапуска чата и vnc в автозагрузку.... \n") + execute_command('cp -rT /root/ArmInstall/autostart /home/admincsm/.config/autostart/') + live_print("Автозагрузка прописана. \n") + else: + live_print("В автозагрузку добавлять ничего не надо. Все уже на месте. \n") + + umount_ArmInstall() + +#установка Крипто-ПРО 5 версии. +def install_cryptopro(): + live_print("Приступаем к установке Крипто-ПРО 5.0 \n") + mount_ArmInstall() + execute_command('cd ~/ArmInstall/CryptoPro/cryptopro5-unpacked-amd64') + execute_command('./install_gui.sh') + + live_print("Крипто-ПРО 5.0 установили. \n") + live_print("Теперь приступим к установке Cades-Plugin для работы в браузере. \n") + execute_command('cd ~/ArmInstall/CryptoPro/cades-plugin-amd64') + execute_command('dpkg -i cprocsp-pki-cades-64_2.0.14892-1_amd64.deb') + execute_command('dpkg -i cprocsp-pki-plugin-64_2.0.14892-1_amd64.deb') + live_print("Cades-Plugin для работы в браузере установлен. \n") + + live_print("Теперь не забудь прописать лицензию в КриптоПРО 5 и перезагрузить ПК. \n") + umount_ArmInstall() + +# +def main(): + while True: + live_print("Привет! Добро пожаловать в программу упрощения жизни начинающего Linux админа. \n \n") + + #если запущено не из под рута - шлем в лес! + if int(execute_command('id -u').strip()) != 0: + #print(execute_command('id -u')) + + ml_text = """ +Дружочек, для работы с этой программой тебе требуются права ROOT, которых сейчас у тебя нет. +Программа будет завершена, а тебе настоятельно советую или подтянуть знания, +или убрать свои кривые рученки и обратиться к тем, кому запускать программу можно. \n + """ + live_print(ml_text) + time.sleep(0.15) + live_print("А теперь все исчезнет, как по волшебству.... (ШУТКА!)") + live_print("Пока. \n \n") + break + + #показываем меню выбора + display_menu() + + choice = input("Выберите нужное действие (от 0.. до 4.. или Q и т.д.): \n") + + if choice == "0": + update_system() + + elif choice == "1": + #установим snap + install_snap() + + elif choice == "2": + #установим flatpak + install_flatpak() + + elif choice == "3": + #установка базового пакета софта + install_base_pack_soft() + + elif choice == "4": + #устанавливаем Крипто-ПРО + install_cryptopro() + + elif choice == "5": + print("Тут будет большая функция для прописки в fstab папок монтирования для простых пользователей.") + + elif choice == "6": + print("Тут будет большая функция для прописки в fstab папок монтирования для избранных пользователей.") + + elif choice == "C": + userCommand = input("Введите консольную команду bash/sh с нужными параметрами: \n") + result_execut_command = execute_command(userCommand) + print(result_execut_command) + + elif choice == "Q": + print("До свидания!") + break + + else: + print("Пожалуйста, выберите правильный пункт меню.") + +if __name__ == "__main__": main() \ No newline at end of file