Много доработок и исправлений.

This commit is contained in:
parent a9b22efe26
commit 72845a2864
4 changed files with 227 additions and 129 deletions

View File

@ -2,5 +2,6 @@
Подробная инструкция по чистой установке и настройке Астра линукс на рабочие ПК, по работе со скриптом для установки ПО на ПК после нулевой установки Astra linux. Подробная инструкция по чистой установке и настройке Астра линукс на рабочие ПК, по работе со скриптом для установки ПО на ПК после нулевой установки Astra linux.
[Описание установки софта в Astra linux CE 2.12.46](alce-2.12.46-install-soft.md) [Описание установки софта в Astra linux SE 1.7.5.9](alse-1.7.5.9-install-soft.md)
[Описание установки софта в Astra linux CE 2.12.46](alce-2.12.46-install-soft.md)

View File

@ -14,13 +14,15 @@
`cd ~/installSoft` `cd ~/installSoft`
Выполняем клонирование данного репозитория: Выполняем клонирование данного репозитория:
`git clone <тут вставь ссылку этого репозитория>` `git clone http://77.242.0.227:8080/Zhebrikov/install-soft-on-Astra-linux.git`
Когда все откопируется, выполняем команду: Когда все откопируется, выполняем команду:
`python3 ~/installSoft/install.py` `python3 ~/installSoft/install.py`
Заметки: Заметки:\
Устанавливаем Python 3.7 Проверяем установлен ли Python 3.7 командой
`python3 --version`
если версия Pyhon 3.7 и выше, то работаем дальше. Если ниже, то устанавливаем свежую версию. Команду пропишу позже.
В питон устанавливаем venv: В питон устанавливаем venv:
`sudo apt-get install python3.7-venv` `sudo apt-get install python3.7-venv`

View File

@ -0,0 +1,20 @@
# Python скрипт по установке ПО на Astra Linux CE 2.12.46
Подробная инструкция по работе со скриптом для установки ПО на рабочие ПК после нулевой установки Astra linux SE 1.7.5.9
Устанавливаем в систему утилиту git:\
`sudo apt intall -y git`\
После успешной установки гита делаем клон этого репозитория в отдельную папку в домашнем каталоге пользователя. Но делаем все уже под рутом. (Команду вспомни сам!)
Для этого создаем себе удобную папку:\
`mkdir ~/installSoft`
Переходим в нее:\
`cd ~/installSoft`
Выполняем клонирование данного репозитория:\
`git clone http://77.242.0.227:8080/Zhebrikov/install-soft-on-Astra-linux.git`
Когда все откопируется, выполняем команду:\
`python3 ~/installSoft/install.py`

View File

@ -2,31 +2,41 @@ import subprocess, os
import sys, time import sys, time
#from colorama import Fore, Style #from colorama import Fore, Style
#вывод на экран меню работы программы
def display_menu(): def display_menu():
ml_text = """ ml_text = """
Меню: \n
1. Установка базового набора пакетов. ************** МЕНЮ: **************************
2. Установка Крипто-ПРО и сопуствующих дополнений. 0. Инициализация свежей системы и ее обновление.
3. Прописка в профиль пользователя сетевых папок 1. Установить SNAP и SNAP-STORE (стараемся не использовать)
4. Выполнение произвольной команды bash/sh с отображением вывода. 2. Установить FLATPAK и его родное GUI.
3. Установка базового набора пакетов (сеть).
4. Установка Крипто-ПРО и сопуствующих дополнений.
5. Прописка в профиль пользователя сетевых папок (смертным)
6. Прописка в профиль пользователя сетевых папок (избранным)
C. Выполнение произвольной команды bash/sh с отображением вывода.
Q. Завершение работы программы Q. Завершение работы программы
""" """
print(ml_text) print(ml_text)
#запуск любой консольной bash команды из скрипта Python
def execute_command(command): def execute_command(command):
result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, universal_newlines=True) result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, universal_newlines=True)
return result.stdout return result.stdout
#имитация живого ввода текста при выводе его на печать
def live_print(text): def live_print(text):
for text_symbol in text: for text_symbol in text:
#Fore.GREEN #Fore.GREEN
sys.stdout.write(text_symbol) sys.stdout.write(text_symbol)
sys.stdout.flush() sys.stdout.flush()
time.sleep(0.03) # Задержка между символами time.sleep(0.03) # Задержка между символами
print() # Переход на новую строку после завершения печати print() # Переход на новую строку после завершения печати
#Style.RESET_ALL #Style.RESET_ALL
#подключение в папку рута, папки ArmInstall
def mount_ArmInstall(): def mount_ArmInstall():
if os.path.exists('~/ArmInstall'): if os.path.exists('~/ArmInstall'):
live_print("Тэкс... папка ArmInstall у нас есть... \n") live_print("Тэкс... папка ArmInstall у нас есть... \n")
@ -45,12 +55,68 @@ def mount_ArmInstall():
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') 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") live_print("Готов и этот шаг. \n")
#отключение папки ArmInstall
def umount_ArmInstall(): def umount_ArmInstall():
if os.path.exists('~/ArmInstall'): if os.path.exists('~/ArmInstall'):
execute_command('umount ~/ArmInstall') execute_command('umount ~/ArmInstall')
execute_command('rm -r ~/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(): 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 #теперь установим snap
execute_command('apt install snapd') execute_command('apt install snapd')
execute_command('sudo ln -s /var/lib/snapd/snap /snap') execute_command('sudo ln -s /var/lib/snapd/snap /snap')
@ -64,30 +130,16 @@ def install_snap():
#следом установим snap-store #следом установим snap-store
execute_command('snap install 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 main(): #установка базового набора ПО для работы пользователей
while True: def install_base_pack_soft():
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") print(" \n \n")
ml_text = """ ml_text = """
Сейчас начнется установка базового набора пакетов. Сейчас начнется установка базового набора пакетов.
@ -98,34 +150,6 @@ def main():
ПРОСЬБА: Дождаться завершения установки и вывода начального меню программы. \n ПРОСЬБА: Дождаться завершения установки и вывода начального меню программы. \n
""" """
live_print(ml_text) 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() mount_ArmInstall()
@ -192,32 +216,83 @@ def main():
live_print("В автозагрузку добавлять ничего не надо. Все уже на месте. \n") live_print("В автозагрузку добавлять ничего не надо. Все уже на месте. \n")
umount_ArmInstall() umount_ArmInstall()
# конец 1 шага. Установка пакета софта завершена.
elif choice == "2": #установка Крипто-ПРО 5 версии.
def install_cryptopro():
live_print("Приступаем к установке Крипто-ПРО 5.0 \n") live_print("Приступаем к установке Крипто-ПРО 5.0 \n")
#./install_gui.sh
mount_ArmInstall() mount_ArmInstall()
execute_command('cd ~/ArmInstall/CryptoPro/cryptopro5-unpacked-amd64') execute_command('cd ~/ArmInstall/CryptoPro/cryptopro5-unpacked-amd64')
execute_command('./install_gui.sh') execute_command('./install_gui.sh')
live_print("Крипто-ПРО 5.0 установили. \n") live_print("Крипто-ПРО 5.0 установили. \n")
live_print("Теперь приступим к установке Cades-Plugin для работы в браузере. \n") live_print("Теперь приступим к установке Cades-Plugin для работы в браузере. \n")
execute_command('cd ~/ArmInstall/CryptoPro/cades-plugin-amd64') 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-cades-64_2.0.14892-1_amd64.deb')
execute_command('dpkg -i cprocsp-pki-plugin-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("Cades-Plugin для работы в браузере установлен. \n")
live_print("Теперь не забудь прописать лицензию в КриптоПРО 5 и перезагрузить ПК. \n") live_print("Теперь не забудь прописать лицензию в КриптоПРО 5 и перезагрузить ПК. \n")
umount_ArmInstall() 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": elif choice == "3":
print("Тут будет большая функция для прописки в fstab папок монтирования для пользователей.") #установка базового пакета софта
install_base_pack_soft()
elif choice == "4": elif choice == "4":
userCommand = input("Введите консольную команду bash/sh с нужными параметрами:") #устанавливаем Крипто-ПРО
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) result_execut_command = execute_command(userCommand)
print(result_execut_command) print(result_execut_command)
elif choice == "Q": elif choice == "Q":
print("До свидания!") print("До свидания!")
break break
else: else:
print("Пожалуйста, выберите правильный пункт меню.") print("Пожалуйста, выберите правильный пункт меню.")