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

225 lines
13 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 install_snap():
#теперь установим 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')
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
#
#добавим в список дистрибутивов новый дебиановкий репозиторий
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')
#обновим и установим пакет libc6*
execute_command('apt-get -t buster install libc6')
#Установим свежие драйвера под интеловские чипы
execute_command('apt-get install -y intell-microcode')
#установим snap
install_snap()
#execute_command('')
#execute_command('')
#примонтируем папку с пакетами установки
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()
# конец 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()