add python script
This commit is contained in:
parent
f7d7935383
commit
0e86711c44
|
@ -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()
|
Loading…
Reference in New Issue