From 0e86711c44aee59506a7f35e58b6e870fa2ddcfe Mon Sep 17 00:00:00 2001 From: Zhebrikov Date: Fri, 24 Nov 2023 17:20:44 +0900 Subject: [PATCH] add python script --- install.py | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 install.py diff --git a/install.py b/install.py new file mode 100644 index 0000000..6b9294e --- /dev/null +++ b/install.py @@ -0,0 +1,179 @@ +import subprocess, os +import sys, time +#from colorama import Fore, Style + +def display_menu(): + ml_text = """ +Меню: +1. Установка базового набора пакетов. +2. Установка Крипто-ПРО и сопуствующих дополнений. +3. Прописка в профиль пользователя сетевых папок +4. Выполнение произвольной команды bash/sh с отображением вывода. +Q. Завершение работы программы + +""" + print(ml_text) + +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 + +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") + +def umount_ArmInstall(): + if os.path.exists('~/ArmInstall'): + execute_command('umount ~/ArmInstall') + execute_command('rm -r ~/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("Выберите нужное действие (1/2/3... и т.д.): \n") + + if choice == "1": + print(" \n \n") + ml_text = """ +Сейчас начнется установка базового набора пакетов. +Во время установки пакетов, настоятельно рекомендую отложить какие-либо действия на данном ПК. +Так же рекомендую НЕ производить никаких манипуляций в консоли Linux. +Как писали на экранах классики длинных установок: Откиньтесь на спинку кресла и наслаждайтесь любимым напитком, +пока мы делаем вашу жизнь лугче и лучше. +ПРОСЬБА: Дождаться завершения установки и вывода начального меню программы. \n + """ + live_print(ml_text) + # дальше нам нужно в домашнем каталоге пользователя создать папку ArmInstall + 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") + 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() + # конец 1 шага. Установка пакета софта завершена. + + elif choice == "2": + live_print("Приступаем к установке Крипто-ПРО 5.0 \n") + #./install_gui.sh + 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() + + elif choice == "3": + print("Тут будет большая функция для прописки в fstab папок монтирования для пользователей.") + elif choice == "4": + userCommand = input("Введите консольную команду bash/sh с нужными параметрами:") + 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