install-soft-on-Astra-linux/install.py

179 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()