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