#!/bin/bash

set -u

NETLOG_FILE='/tmp/check_network.txt'
SOFTLOG_FILE='/tmp/check_software.txt'
hosts=('hq.corp.mos.ru' 'owa.mos.ru')
cur_time=$(date +%F_%H:%M:%S)
KDE_LOGIN=$(w -s -h | grep 'plasma' | awk '{print $1}')
HOME_DIR=$(find /home -maxdepth 1 -type d | grep -E -w "$KDE_LOGIN$|$KDE_LOGIN@hq.corp.mos.ru")
RESULTS="$HOME_DIR/Results"
PC_TEMPLATE="$HOME_DIR/MostechHelp_Template"

####################################################################################################################
# Проверка установки KRDC
func_check_krdc_install() {
if rpm -qa | grep 'krdc-'; then
kdialog --passivepopup 'KRDC установлен' 1 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
else
kdialog --error 'KRDC НЕ установлен!\n\nНеобходимо установить пакет командой:\nsudo dnf install krdc' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1
fi
}
####################################################################################################################
# Запрос логина и пароля
get_logpass() {
SSH_USER=$(kdialog --inputbox "Введите логин ПРИВИЛЕГИРОВАННОЙ УЗ для подключения\n(текущий - $KDE_LOGIN):" $KDE_LOGIN --title 'Мостех.Помощь' --icon 'mostech-help-utility')
if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
elif [[ -z $SSH_USER ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; get_logpass;
fi
SSH_PASS=$(kdialog --password "Введите пароль для подключения:" --title 'Мостех.Помощь' --icon 'mostech-help-utility')
if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
elif [[ -z $SSH_PASS ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; get_logpass;
fi
}
####################################################################################################################

# Стандартная сетевая диагностика
network_diagnostic1() {
SOURCE_IP=$(hostname -i | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
ip_host=$(kdialog --inputbox 'Введите IP-адрес или DNS-имя хоста' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 350x350)
if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
elif [[ -z $ip_host ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; network_diagnostic1;
fi
kdialog --passivepopup 'Выполняется диагностика, ожидайте...\nЭто может занять несколько минут' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
ping -c 4 $ip_host > "$NETLOG_FILE" && echo $'\n' >> "$NETLOG_FILE"
if ping -c 4 $ip_host > /dev/null 2>&1; then check1='ДОСТУПЕН'; else check1='НЕДОСТУПЕН'; fi
traceroute -I $ip_host >> "$NETLOG_FILE" && echo $'\n' >> "$NETLOG_FILE"
if traceroute -I $ip_host > /dev/null 2>&1; then check2='ДОСТУПЕН'; else check2='НЕДОСТУПЕН'; fi
nc -zv -w 2 $ip_host 22 2>&1 | grep $ip_host >> "$NETLOG_FILE" && echo $'\n' >> "$NETLOG_FILE"
if nc -zv -w 2 $ip_host 22; then check3='ДОСТУПЕН'; else check3='НЕДОСТУПЕН'; fi
nc -zv -w 2 $ip_host 5900 2>&1 | grep $ip_host >> "$NETLOG_FILE" && echo $'\n' >> "$NETLOG_FILE"
if nc -zv -w 2 $ip_host 5900; then check4='ДОСТУПЕН'; else check4='НЕДОСТУПЕН'; fi
kdialog --yesno "Ваш текущий IP-адрес(а): $SOURCE_IP\nЦелевой IP-адрес: $ip_host\n\nРЕЗУЛЬТАТЫ:\n\nПроверка ping: $check1\nПроверка traceroute: $check2\nПроверка ssh: $check3\nПроверка vnc: $check4\n\nПосмотреть подробные результаты ?\n" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
if [[ $? -eq 0 ]]; then
kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 600x500 --textbox /dev/stdin < "$NETLOG_FILE"; rm -f "$NETLOG_FILE";
else
kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$NETLOG_FILE"; exit 0;
fi
}

# Проверка удаленного подключения по ssh
network_diagnostic2() {
ip_host2=$(kdialog --inputbox 'Введите IP-адрес или DNS-имя хоста' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 350x350)
if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
elif [[ -z $ip_host2 ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; network_diagnostic2;
fi
kdialog --passivepopup 'Проверка доступности хоста...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
if ping -c 4 $ip_host2 > /dev/null 2>&1 && nc -zv -w 2 $ip_host2 22; then
	kdialog --passivepopup 'Хост доступен' 1 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	get_logpass
	kdialog --passivepopup 'Выполняется диагностика, ожидайте...' 1 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
else
kdialog --error 'Хост недоступен по SSH!\nПроведение работ невозможно!' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; exit 2
fi
}
####################################################################################################################

# Удаленная сетевая диагностика
remote_net_diag() {
if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 exit; then kdialog --error "Ошибка подключения к удаленному хосту!\nИмя/IP-адрес хоста: $ip_host2\n\nВозможные причины:\n- служба ssh уже неактивна\n- неверные логин/пароль\n- отсутствуют права на подключение\n- ssh 'слушает' другой сетевой интерфейс или нестандартный порт (не 22)" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; unset SSH_PASS; exit 1;
else
kdialog --passivepopup 'Выполняется сбор информации, ожидайте...\nЭто может занять несколько минут' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
if [[ -f "$NETLOG_FILE" ]]; then rm -f "$NETLOG_FILE"; fi
for x in "${hosts[@]}"; do
	sshpass -p $SSH_PASS ssh -t -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 "host $x; echo $'\n'" >> "$NETLOG_FILE";
	sshpass -p $SSH_PASS ssh -t -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 "ping -c 4 $x; echo $'\n'" >> "$NETLOG_FILE";
	sshpass -p $SSH_PASS ssh -t -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 "traceroute -I $x; echo $'\n'" >> "$NETLOG_FILE";
done
kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$NETLOG_FILE";
rm -f "$NETLOG_FILE"
fi
}

# Выбор периода выгрузки логов
logs_interval() {
list=$(kdialog --combobox 'Выберите промежуток времени, за который необходимо выгрузить логи:' "Последний час" "Последние 12 часов" "Последние 24 часа" "Последние 7 дней" "Последние 30 дней" --title 'Мостех.Помощь' --icon 'mostech-help-utility')
if [ $? -ne 0 ]; then kdialog --passivepopup 'Отмена выгрузки логов!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1; fi
case $list in
	"Последний час") param2=$(date "+%F %H:%M:%S" --date='-1 hour');;
	"Последние 12 часов") param2=$(date "+%F %H:%M:%S" --date='-12 hour');;
	"Последние 24 часа") param2=$(date "+%F %H:%M:%S" --date='-24 hour');;
	"Последние 7 дней") param2=$(date "+%F %H:%M:%S" --date='-7 days');;
	"Последние 30 дней") param2=$(date "+%F %H:%M:%S" --date='-30 days');;
	*) kdialog --error 'Некорректный выбор! Попробуйте еще раз!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; logs_interval;;
esac
}

# Выгрузка логов
logs_upload() {
param2=$(echo "$param2" | sed 's/ /\\ /')
LOG_FILE="/tmp/logs_from_$ip_host2.txt"
if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 exit; then kdialog --error "Ошибка подключения к удаленному хосту!\nИмя/IP-адрес хоста: $ip_host2\n\nВозможные причины:\n- служба ssh уже неактивна\n- неверные логин/пароль\n- отсутствуют права на подключение\n- ssh 'слушает' другой сетевой интерфейс или нестандартный порт (не 22)" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; unset SSH_PASS; exit 1;
else
	kdialog --passivepopup 'Выполняется сбор информации, ожидайте...\nЭто может занять несколько минут' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" journalctl --since "$param2" > "$LOG_FILE"; tar -czf /tmp/logs_from_$ip_host2-$cur_time.tar.gz "$LOG_FILE"; rm -f "$LOG_FILE"
	mv /tmp/logs_from_$ip_host2-$cur_time.tar.gz "$RESULTS" && chown -R $KDE_LOGIN "$RESULTS"
	kdialog --msgbox "Выгрузка сохранена в архиве logs_from_$ip_host2.tar.gz в директории $RESULTS\n\nНажмите кнопку 'Выход'!" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'
	exit 0
fi
}

# Удаленное подключение по SSH в консоль
ssh_connection() {
ip_host3=$(kdialog --inputbox 'Введите IP-адрес или DNS-имя хоста' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 350x350)
if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
elif [[ -z $ip_host3 ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; ssh_connection;
fi
kdialog --passivepopup 'Проверка доступности хоста...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
if ping -c 4 $ip_host3 > /dev/null 2>&1 && nc -zv -w 2 $ip_host3 22; then
	kdialog --passivepopup 'Хост доступен' 1 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	SSH_USER=$(kdialog --inputbox "Введите логин ПРИВИЛЕГИРОВАННОЙ УЗ для подключения\n(текущий - $KDE_LOGIN):" $KDE_LOGIN --title 'Мостех.Помощь' --icon 'mostech-help-utility')
    if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
    elif [[ -z $SSH_USER ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; ssh_connection;
    fi
	bash -c "konsole --noclose -e ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host3"
else
kdialog --error 'Хост недоступен по SSH!\nПроведение работ невозможно!' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; exit 2
fi
}

# Удаленное подключение по VNC на рабочий стол
vnc_connection() {
ip_host4=$(kdialog --inputbox 'Введите IP-адрес или DNS-имя хоста' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 350x350)
if [[ $? -ne 0 ]]; then kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
elif [[ -z $ip_host4 ]]; then kdialog --error 'Пустое значение!' --title 'Мостех.Помощь' --icon 'mostech-help-utility'; vnc_connection;
fi
kdialog --passivepopup 'Проверка доступности хоста...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
if ping -c 4 $ip_host4 > /dev/null 2>&1 && nc -zv -w 2 $ip_host4 5900; then
	kdialog --passivepopup 'Хост доступен' 1 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
    krdc vnc://$ip_host4
else
kdialog --error 'Хост недоступен по VNC!\nПроведение работ невозможно!\nУбедитесь, что пользователь запустил утилиту KRFB!' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; exit 2
fi
}

####################################################################################################################
avail_pkgs_list=(
	'mostechoffice' 'Мостех.Офис' off
	'mt-mail mt-ews' 'Мостех.Почта' off
	'yandex-browser' 'Яндекс.Браузер' off
	'plasma5-ark' 'Ark Archivator' off
	'okular' 'Okular PDF' off
	'telegram-desktop' 'Telegram Messenger' off
	'pdfarranger' 'PDF Arranger' off
	'naps2' 'NAPS2' off
	'edge' 'MS Edge' off
	'chrome' 'Google Chrome' off
	'faststone-image-viewer' 'FastStone Image Viewer' off
	'tdm' 'TDM Messenger' off
	'ngate-csp' 'КриптоПро CSP и NGate' off
	'salt-minion' 'SaltStack agent' off
	'dit-support' 'Агент Pro32 Connect (dit-support)' off
	'uds-system-agent' 'Агент UDS (Мостех.Ассистент)' off
)

# Установка ПО
inst_pkgs() {
case $MULTI_HOST_MODE in
0)
if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 exit; then kdialog --error "Ошибка подключения к удаленному хосту!\nИмя/IP-адрес хоста: $ip_host2\n\nВозможные причины:\n- служба ssh уже неактивна\n- неверные логин/пароль\n- отсутствуют права на подключение\n- ssh 'слушает' другой сетевой интерфейс или нестандартный порт (не 22)" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; unset SSH_PASS; exit 1; fi
sel_pkgs=$(kdialog --separate-output --checklist 'Выберите ПО для установки:' "${avail_pkgs_list[@]}" --geometry 400x450 --title 'Мостех.Помощь' --icon 'mostech-help-utility');
if [[ $? -eq 0 ]]; then
	kdialog --passivepopup 'Выполняется установка ПО, ожидайте...\nЭто может занять несколько минут!' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	for z in ${sel_pkgs[@]}; do
		case $z in
			'edge') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'microsoft-edge-stable'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет edge установлен!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет edge уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет edge уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'chrome') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'google-chrome-stable'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет chrome установлен!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет chrome уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет chrome уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'faststone-image-viewer') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'faststone-image-viewer'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE" &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf install -y wine64
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет faststone-image-viewer установлен!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет faststone-image-viewer уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет faststone-image-viewer уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'tdm') if sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 "test ! -f '/opt/tdm/tdm.latest.AppImage' || test ! -f '/usr/share/applications/tdm.desktop'"; then
			if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" mkdir -p /opt/tdm &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://s3.tdm.mos.ru/fileupload/standalone/tdm.latest.AppImage -P /opt/tdm/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" chmod +x /opt/tdm/tdm.latest.AppImage &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.desktop -P /usr/share/applications/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.svg -P /usr/share/icons/
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет TDM установлен!" >> "$SOFTLOG_FILE"; fi
			else echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет TDM уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет TDM уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'ngate-csp') if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 rpm -qa | grep -E 'lsb-cprocsp|cprocsp|cprongate'; then
			if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-kc1-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-capilite-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-cptools-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-curl-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-cades-64-2.0.15000-1.amd64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-gui-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-plugin-64-2.0.15000-1.amd64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cloud-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-pcsc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cpfkc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cryptoki-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-edoc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-emv-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-infocrypt-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-inpaspot-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-jacarta-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-kst-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-mskey-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-novacard-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rosan-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rustoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rutoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-stunnel-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-base-5.0.13000-7.noarch.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-import-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-pkcs11-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-rdr-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-tun-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-gui-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" "rpm -i /tmp/*.rpm"
			echo "Хост $ip_host2 - пакеты КриптоПро CSP и NGate установлены!" >> "$SOFTLOG_FILE";
			else echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет КриптоПро CSP и NGate уже установлены, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакеты КриптоПро CSP и NGate уже установлены, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'salt-minion') if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 rpm -qa | grep -E 'salt-minion'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf install -y salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/minion -P /etc/salt/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion.d/_schedule.conf &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/_schedule.conf -P /etc/salt/minion.d/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /lib/systemd/system/salt-minion.service &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/salt-minion.service -P /lib/systemd/system/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" mkdir -p /lib/systemd/system/salt-minion.service.d &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/override.conf -P /lib/systemd/system/salt-minion.service.d/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl enable salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl start salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" sudo python3 -m ensurepip &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" sudo python3 -m pip install ldap3 &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" salt-call saltutil.sync_all &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl restart salt-minion
				echo "Хост $ip_host2 - пакет SaltStack агент установлен и настроен!" >> "$SOFTLOG_FILE";
				else
				echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"
				fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nSaltStack агент уже установлен и настроен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет SaltStack уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'uds-system-agent') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'uds-system-agent'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf install -y $z | tee -a "$SOFTLOG_FILE" &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl start uds-system-agent.service &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl enable uds-system-agent.service
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет $z установлен!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'dit-support') if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 rpm -qa | grep -w 'dit-support'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/dit-support.1.8.362.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" "dnf install -y /tmp/*.rpm" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" "rm -f /tmp/*.rpm" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -install &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -register administrator:23 &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl restart pro32connect.service
				echo "Хост $ip_host2 - пакет $z агент установлен и настроен!" >> "$SOFTLOG_FILE";
				else
				echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"
				fi
			else
			kdialog --passivepopup "Хост $ip_host2:\n$z агент уже установлен и настроен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			*) check_exist_pkg=$(sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w "$z")
			if [[ -z $check_exist_pkg ]]; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf install -y $z | tee -a "$SOFTLOG_FILE";
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;
		esac
	done
	kdialog --yesno 'Команды выполнены!\nПосмотреть подробные результаты ?' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
	if [[ $? -eq 0 ]]; then
	kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$SOFTLOG_FILE"; rm -f "$SOFTLOG_FILE"
	else
	kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$SOFTLOG_FILE"; exit 0;
	fi
else
	kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
fi;;
1)
sel_pkgs=$(kdialog --separate-output --checklist 'Выберите ПО для установки:' "${avail_pkgs_list[@]}" --geometry 400x450 --title 'Мостех.Помощь' --icon 'mostech-help-utility');
if [[ $? -eq 0 ]]; then
	kdialog --passivepopup 'Выполняется установка ПО, ожидайте...\nЭто может занять несколько минут!' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	for m in $(cat $PC_TEMPLATE/*.csv); do
		echo  -e "\n### Результаты работы на хосте $m ###" >> "$SOFTLOG_FILE"
		if ! nc -zv -w 2 $m 22; then
		echo "$m - хост недоступен по SSH! Проведение работ невозможно!" >> "$SOFTLOG_FILE"
		else
		if ! sshpass -p $SSH_PASS ssh $SSH_USER@$m exit; then
		echo "$m - подключение по SSH под УЗ $SSH_USER невозможно!" >> "$SOFTLOG_FILE"
		else
		for z in ${sel_pkgs[@]}; do
			case $z in
				'edge') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'microsoft-edge-stable'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет edge установлен!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m\nПакет edge уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет edge уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'chrome') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'google-chrome-stable'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет chrome установлен!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m\nПакет chrome уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет chrome уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'faststone-image-viewer') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'faststone-image-viewer'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf install -y wine64
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет faststone-image-viewer установлен!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m\nПакет faststone-image-viewer уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет faststone-image-viewer уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'tdm') if sshpass -p $SSH_PASS ssh $SSH_USER@$m "test ! -f '/opt/tdm/tdm.latest.AppImage' || test ! -f '/usr/share/applications/tdm.desktop'"; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" mkdir -p /opt/tdm &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://s3.tdm.mos.ru/fileupload/standalone/tdm.latest.AppImage -P /opt/tdm/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" chmod +x /opt/tdm/tdm.latest.AppImage &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.desktop -P /usr/share/applications/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.svg -P /usr/share/icons/
				if [[ $? -eq 0 ]]; then echo "Хост $SSH_USER@$m - пакет TDM установлен!" >> "$SOFTLOG_FILE"; fi
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m:\nПакет TDM уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет TDM уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'ngate-csp') if ! sshpass -p $SSH_PASS ssh $SSH_USER@$m rpm -qa | grep -E 'lsb-cprocsp|cprocsp|cprongate'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-kc1-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-capilite-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-cptools-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-curl-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-cades-64-2.0.15000-1.amd64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-gui-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-plugin-64-2.0.15000-1.amd64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cloud-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-pcsc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cpfkc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cryptoki-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-edoc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-emv-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-infocrypt-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-inpaspot-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-jacarta-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-kst-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-mskey-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-novacard-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rosan-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rustoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rutoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-stunnel-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-base-5.0.13000-7.noarch.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-import-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-pkcs11-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-rdr-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-tun-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-gui-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" "rpm -i /tmp/*.rpm"
				echo "Хост $m - пакеты КриптоПро CSP и NGate установлены!" >> "$SOFTLOG_FILE";
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m:\nПакет КриптоПро CSP и NGate уже установлены, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакеты КриптоПро CSP и NGate уже установлены, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'salt-minion') if ! sshpass -p $SSH_PASS ssh $SSH_USER@$m rpm -qa | grep -E 'salt-minion'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf install -y salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/minion -P /etc/salt/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion.d/_schedule.conf &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/_schedule.conf -P /etc/salt/minion.d/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /lib/systemd/system/salt-minion.service &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/salt-minion.service -P /lib/systemd/system/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" mkdir -p /lib/systemd/system/salt-minion.service.d &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/override.conf -P /lib/systemd/system/salt-minion.service.d/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl enable salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl start salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" sudo python3 -m ensurepip &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" sudo python3 -m pip install ldap3 &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" salt-call saltutil.sync_all &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl restart salt-minion
				echo "Хост $m - пакет SaltStack агент установлен и настроен!" >> "$SOFTLOG_FILE";
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m:\nSaltStack агент уже установлен и настроен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет SaltStack уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'uds-system-agent') if ! sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'uds-system-agent'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf install -y $z | tee -a "$SOFTLOG_FILE" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl start uds-system-agent.service &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl enable uds-system-agent.service
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет $z установлен!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m:\nПакет $z уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'dit-support') if ! sshpass -p $SSH_PASS ssh $SSH_USER@$m rpm -qa | grep -w 'dit-support'; then
					if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
					sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/dit-support.1.8.362.rpm -P /tmp &&
					sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" "dnf install -y /tmp/*.rpm" &&
					sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" "rm -f /tmp/*.rpm" &&
					sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -install &&
					sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -register administrator:23 &&
					sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl restart pro32connect.service
					echo "Хост $m - пакет $z агент установлен и настроен!" >> "$SOFTLOG_FILE";
					else
					echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"
					fi
				else
				kdialog --passivepopup "Хост $m:\n$z агент уже установлен и настроен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				*) check_exist_pkg=$(sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w "$z")
				if [[ -z $check_exist_pkg ]]; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf install -y $z | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m:\nПакет $z уже установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z уже установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;
			esac
		done
		fi
		fi
	done
	kdialog --yesno 'Команды выполнены!\nПосмотреть подробные результаты ?' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
	if [[ $? -eq 0 ]]; then
	kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$SOFTLOG_FILE"; rm -f "$SOFTLOG_FILE"
	else
	kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$SOFTLOG_FILE"; exit 0;
	fi
else
	kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
fi
;;
esac
}

# Переустановка ПО
reinst_pkgs() {
case $MULTI_HOST_MODE in
0)
if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 exit; then kdialog --error "Ошибка подключения к удаленному хосту!\nИмя/IP-адрес хоста: $ip_host2\n\nВозможные причины:\n- служба ssh уже неактивна\n- неверные логин/пароль\n- отсутствуют права на подключение\n- ssh 'слушает' другой сетевой интерфейс или нестандартный порт (не 22)" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; unset SSH_PASS; exit 1; fi
sel_pkgs=$(kdialog --separate-output --checklist 'Выберите ПО для переустановки:' "${avail_pkgs_list[@]}" --geometry 400x450 --title 'Мостех.Помощь' --icon 'mostech-help-utility');
if [[ $? -eq 0 ]]; then
	kdialog --passivepopup 'Выполняется переустановка ПО, ожидайте...\nЭто может занять несколько минут!' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	for z in ${sel_pkgs[@]}; do
		case $z in
			'edge') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'microsoft-edge-stable'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm remove -y microsoft-edge-stable &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'chrome') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'google-chrome-stable'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm remove -y google-chrome-stable &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'faststone-image-viewer') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'faststone-image-viewer'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm remove -y $z &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE" &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf install -y wine64
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'tdm') if sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 "test -f '/opt/tdm/tdm.latest.AppImage' || test -f '/usr/share/applications/tdm.desktop'"; then
			if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
			sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -rf /opt/tdm &&
			sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /usr/share/applications/tdm.desktop &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" mkdir -p /opt/tdm &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://s3.tdm.mos.ru/fileupload/standalone/tdm.latest.AppImage -P /opt/tdm/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" chmod +x /opt/tdm/tdm.latest.AppImage &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.desktop -P /usr/share/applications/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.svg -P /usr/share/icons/
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет TDM переустановлен!" >> "$SOFTLOG_FILE"; fi
			else echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет TDM не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет TDM не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'ngate-csp') if sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 rpm -qa | grep -E 'lsb-cprocsp|cprocsp|cprongate'; then
			if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf remove -y lsb-cprocsp* cprocsp* cprongate* &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -rf /opt/cpro* &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-kc1-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-capilite-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-cptools-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-curl-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-cades-64-2.0.15000-1.amd64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-gui-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-plugin-64-2.0.15000-1.amd64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cloud-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-pcsc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cpfkc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cryptoki-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-edoc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-emv-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-infocrypt-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-inpaspot-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-jacarta-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-kst-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-mskey-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-novacard-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rosan-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rustoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rutoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-stunnel-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-base-5.0.13000-7.noarch.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-import-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-pkcs11-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-rdr-64-5.0.13000-7.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-tun-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-gui-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" "rpm -i /tmp/*.rpm"
			echo "Хост $ip_host2 - пакеты КриптоПро CSP и NGate переустановлен!" >> "$SOFTLOG_FILE";
			else echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакеты КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'salt-minion') if sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 rpm -qa | grep -E 'salt-minion'; then
			if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf remove -y salt-minion &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf install -y salt-minion &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/minion -P /etc/salt/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion.d/_schedule.conf &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/_schedule.conf -P /etc/salt/minion.d/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /lib/systemd/system/salt-minion.service &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/salt-minion.service -P /lib/systemd/system/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" mkdir -p /lib/systemd/system/salt-minion.service.d &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/override.conf -P /lib/systemd/system/salt-minion.service.d/ &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl enable salt-minion &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl start salt-minion &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" sudo python3 -m ensurepip &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" sudo python3 -m pip install ldap3 &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" salt-call saltutil.sync_all &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl restart salt-minion
			echo "Хост $ip_host2 - пакет SaltStack агент переустановлен и настроен!" >> "$SOFTLOG_FILE";
			else echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nSaltStack агент не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет SaltStack не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'uds-system-agent') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'uds-system-agent'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf reinstall -y $z | tee -a "$SOFTLOG_FILE" &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl start uds-system-agent.service &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl enable uds-system-agent.service
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет $z установлен!" >> "$SOFTLOG_FILE"; fi
			else
				kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'dit-support') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'dit-support'; then
			if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf remove -y dit-support &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/dit-support.1.8.362.rpm -P /tmp &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" "dnf install -y /tmp/*.rpm" &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" "rm -f /tmp/*.rpm" &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -install &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -register administrator:23 &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" systemctl restart pro32connect.service
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет $z установлен!" >> "$SOFTLOG_FILE"; fi			
			else echo "$ip_host2 - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
			else
				kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			*) check_exist_pkg=$(sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w "$z")
			if [[ -n $check_exist_pkg ]]; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf reinstall -y $z | tee -a "$SOFTLOG_FILE"
			else
				kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;
		esac
	done
	kdialog --yesno 'Команды выполнены!\nПосмотреть подробные результаты ?' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
	if [[ $? -eq 0 ]]; then
	kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$SOFTLOG_FILE"; rm -f "$SOFTLOG_FILE"
	else
	kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$SOFTLOG_FILE"; exit 0;
	fi
else
	kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
fi;;
1)
sel_pkgs=$(kdialog --separate-output --checklist 'Выберите ПО для переустановки:' "${avail_pkgs_list[@]}" --geometry 400x450 --title 'Мостех.Помощь' --icon 'mostech-help-utility');
if [[ $? -eq 0 ]]; then
	kdialog --passivepopup 'Выполняется переустановка ПО, ожидайте...\nЭто может занять несколько минут!' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	for m in $(cat $PC_TEMPLATE/*.csv); do
		echo "### Результаты работы на хосте $m ###" >> "$SOFTLOG_FILE"
		if ! nc -zv -w 2 $m 22; then
		echo -e "\n$m - хост недоступен по SSH! Проведение работ невозможно!" >> "$SOFTLOG_FILE"
		else
		if ! sshpass -p $SSH_PASS ssh $SSH_USER@$m exit; then
		echo "$m - подключение по SSH под УЗ $SSH_USER невозможно!" >> "$SOFTLOG_FILE"
		else
		for z in ${sel_pkgs[@]}; do
			case $z in
				'edge') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'microsoft-edge-stable'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm remove -y microsoft-edge-stable &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'chrome') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'google-chrome-stable'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm remove -y google-chrome-stable &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'faststone-image-viewer') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'faststone-image-viewer'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm remove -y $z &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm play -y $z | tee -a "$SOFTLOG_FILE" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf install -y wine64
				else
				kdialog --passivepopup "Хост $m\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'tdm') if sshpass -p $SSH_PASS ssh $SSH_USER@$m "test -f '/opt/tdm/tdm.latest.AppImage' || test -f '/usr/share/applications/tdm.desktop'"; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -rf /opt/tdm &&
				sshpass -p $SSH_PASS ssh $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /usr/share/applications/tdm.desktop &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" mkdir -p /opt/tdm &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://s3.tdm.mos.ru/fileupload/standalone/tdm.latest.AppImage -P /opt/tdm/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" chmod +x /opt/tdm/tdm.latest.AppImage &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.desktop -P /usr/share/applications/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/tdm.svg -P /usr/share/icons/
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет TDM переустановлен!" >> "$SOFTLOG_FILE"; fi
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m:\nПакет TDM не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет TDM не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'ngate-csp') if sshpass -p $SSH_PASS ssh $SSH_USER@$m rpm -qa | grep -E 'lsb-cprocsp|cprocsp|cprongate'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf remove -y lsb-cprocsp* cprocsp* cprongate* &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -rf /opt/cpro* &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-kc1-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-capilite-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-cptools-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-curl-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-cades-64-2.0.15000-1.amd64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-gui-gtk-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-pki-plugin-64-2.0.15000-1.amd64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cloud-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-pcsc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cpfkc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-cryptoki-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-edoc-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-emv-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-infocrypt-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-inpaspot-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-jacarta-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-kst-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-mskey-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-novacard-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rosan-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rustoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-rdr-rutoken-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/cprocsp-stunnel-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-base-5.0.13000-7.noarch.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-import-ca-certs-5.0.13000-7.noarch.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-pkcs11-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/CSP_5.0/lsb-cprocsp-rdr-64-5.0.13000-7.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-tun-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/cprongate-gui-1.0.20-335.g57938a0.x86_64.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" "rpm -i /tmp/*.rpm"
				echo "Хост $m - пакеты КриптоПро CSP и NGate переустановлены!" >> "$SOFTLOG_FILE";
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m\nПакет КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакеты КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'salt-minion') if sshpass -p $SSH_PASS ssh $SSH_USER@$m rpm -qa | grep -E 'salt-minion'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf remove -y salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf install -y salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/minion -P /etc/salt/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /etc/salt/minion.d/_schedule.conf &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/_schedule.conf -P /etc/salt/minion.d/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /lib/systemd/system/salt-minion.service &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/salt-minion.service -P /lib/systemd/system/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" mkdir -p /lib/systemd/system/salt-minion.service.d &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/etc/minion/override.conf -P /lib/systemd/system/salt-minion.service.d/ &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl enable salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl start salt-minion &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" sudo python3 -m ensurepip &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" sudo python3 -m pip install ldap3 &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" salt-call saltutil.sync_all &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl restart salt-minion
				echo "Хост $m - пакет SaltStack агент переустановлен и настроен!" >> "$SOFTLOG_FILE";
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m:\nSaltStack агент не был ранее установлен и настроен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет SaltStack не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'uds-system-agent') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'uds-system-agent'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf reinstall -y $z | tee -a "$SOFTLOG_FILE" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl start uds-system-agent.service &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl enable uds-system-agent.service
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет $z установлен!" >> "$SOFTLOG_FILE"; fi
				else
					kdialog --passivepopup "Хост $m:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
					echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'dit-support') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'dit-support'; then
				if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" nc -zv -w 2 repo-artifacts.mos.ru 443; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf remove -y dit-support &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" wget https://repo-artifacts.mos.ru/repository/MosTechOS/main/dit-support.1.8.362.rpm -P /tmp &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" "dnf install -y /tmp/*.rpm" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" "rm -f /tmp/*.rpm" &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -install &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" /opt/dit-support/dit-support -register administrator:23 &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" systemctl restart pro32connect.service
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет $z установлен!" >> "$SOFTLOG_FILE"; fi			
				else echo "$m - репозиторий repo-artifacts.mos.ru недоступен! Проведение работ невозможно!" >> "$SOFTLOG_FILE"; fi
				else
					kdialog --passivepopup "Хост $m:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
					echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				*) check_exist_pkg=$(sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w "$z")
				if [[ -n $check_exist_pkg ]]; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf reinstall -y $z | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;
			esac
		done
		fi
		fi
	done
	kdialog --yesno 'Команды выполнены!\nПосмотреть подробные результаты ?' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
	if [[ $? -eq 0 ]]; then
	kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$SOFTLOG_FILE"; rm -f "$SOFTLOG_FILE"
	else
	kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$SOFTLOG_FILE"; exit 0;
	fi
else
	kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
fi;;
esac
}

# Удаление ПО
unist_pkgs() {
case $MULTI_HOST_MODE in
0)
if ! sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 exit; then kdialog --error "Ошибка подключения к удаленному хосту!\nИмя/IP-адрес хоста: $ip_host2\n\nВозможные причины:\n- служба ssh уже неактивна\n- неверные логин/пароль\n- отсутствуют права на подключение\n- ssh 'слушает' другой сетевой интерфейс или нестандартный порт (не 22)" --title 'Мостех.Помощь' --icon 'mostech-help-utility' --ok-label 'Выход'; unset SSH_PASS; exit 1; fi
sel_pkgs=$(kdialog --separate-output --checklist 'Выберите ПО для удаления:' "${avail_pkgs_list[@]}" --geometry 400x450 --title 'Мостех.Помощь' --icon 'mostech-help-utility');
if [[ $? -eq 0 ]]; then
	kdialog --passivepopup 'Выполняется удаление ПО, ожидайте...\nЭто может занять несколько минут!' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	for z in ${sel_pkgs[@]}; do
		case $z in
			'edge') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'microsoft-edge-stable'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm remove -y microsoft-edge-stable | tee -a "$SOFTLOG_FILE"
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'chrome') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'google-chrome-stable'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm remove -y google-chrome-stable | tee -a "$SOFTLOG_FILE"
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'faststone-image-viewer') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w 'faststone-image-viewer'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" epm remove -y $z | tee -a "$SOFTLOG_FILE"
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'tdm') if sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 "test -f '/opt/tdm/tdm.latest.AppImage' || test -f '/usr/share/applications/tdm.desktop'"; then
			sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -rf /opt/tdm &&
			sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -f /usr/share/applications/tdm.desktop &&
			if [[ $? -eq 0 ]]; then echo "Хост $ip_host2 - пакет TDM удален!" >> "$SOFTLOG_FILE"; fi
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет TDM не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет TDM не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			'ngate-csp') if sshpass -p $SSH_PASS ssh $SSH_USER@$ip_host2 rpm -qa | grep -E 'lsb-cprocsp|cprocsp|cprongate'; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf remove -y lsb-cprocsp* cprocsp* cprongate* &&
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" rm -rf /opt/cpro* &&
			echo "Хост $ip_host2 - пакеты КриптоПро CSP и NGate удалены!" >> "$SOFTLOG_FILE";
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакеты КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;

			*) check_exist_pkg=$(sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 rpm -qa | grep -w "$z")
			if [[ -n $check_exist_pkg ]]; then
			sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$ip_host2 sudo -S <<< "$SSH_PASS" dnf remove -y $z | tee -a "$SOFTLOG_FILE"
			else
			kdialog --passivepopup "Хост $ip_host2:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
			echo "Хост $ip_host2 - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
			fi;;
		esac
	done
	kdialog --yesno 'Команды выполнены!\nПосмотреть подробные результаты ?' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
	if [[ $? -eq 0 ]]; then
	kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$SOFTLOG_FILE"; rm -f "$SOFTLOG_FILE"
	else
	kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$SOFTLOG_FILE"; exit 0;
	fi
else
	kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
fi;;
1)
sel_pkgs=$(kdialog --separate-output --checklist 'Выберите ПО для удаления:' "${avail_pkgs_list[@]}" --geometry 400x450 --title 'Мостех.Помощь' --icon 'mostech-help-utility');
if [[ $? -eq 0 ]]; then
	kdialog --passivepopup 'Выполняется удаление ПО, ожидайте...\nЭто может занять несколько минут!' 3 --title 'Мостех.Помощь' --icon 'mostech-help-utility'
	for m in $(cat $PC_TEMPLATE/*.csv); do
		echo -e "\n### Результаты работы на хосте $m ###" >> "$SOFTLOG_FILE"
		if ! nc -zv -w 2 $m 22; then
		echo "$m - хост недоступен по SSH! Проведение работ невозможно!" >> "$SOFTLOG_FILE"
		else
		if ! sshpass -p $SSH_PASS ssh $SSH_USER@$m exit; then
		echo "$m - подключение по SSH под УЗ $SSH_USER невозможно!" >> "$SOFTLOG_FILE"
		else
		for z in ${sel_pkgs[@]}; do
			case $z in
				'edge') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'microsoft-edge-stable'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm remove -y microsoft-edge-stable | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'chrome') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'google-chrome-stable'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm remove -y google-chrome-stable | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'faststone-image-viewer') if sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w 'faststone-image-viewer'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" epm remove -y $z | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'tdm') if sshpass -p $SSH_PASS ssh $SSH_USER@$m "test -f '/opt/tdm/tdm.latest.AppImage' || test -f '/usr/share/applications/tdm.desktop'"; then
				sshpass -p $SSH_PASS ssh $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -rf /opt/tdm &&
				sshpass -p $SSH_PASS ssh $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -f /usr/share/applications/tdm.desktop &&
				if [[ $? -eq 0 ]]; then echo "Хост $m - пакет TDM удален!" >> "$SOFTLOG_FILE"; fi
				else
				kdialog --passivepopup "Хост $m\nПакет TDM не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет TDM не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				'ngate-csp') if sshpass -p $SSH_PASS ssh $SSH_USER@$m rpm -qa | grep -E 'lsb-cprocsp|cprocsp|cprongate'; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf remove -y lsb-cprocsp* cprocsp* cprongate* &&
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" rm -rf /opt/cpro* &&
				echo "Хост $m - пакеты КриптоПро CSP и NGate удалены!" >> "$SOFTLOG_FILE";
				else
				kdialog --passivepopup "Хост $m\nПакет КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакеты КриптоПро CSP и NGate не были ранее установлены, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi;;

				*) check_exist_pkg=$(sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m rpm -qa | grep -w "$z")
				if [[ -n $check_exist_pkg ]]; then
				sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no $SSH_USER@$m sudo -S <<< "$SSH_PASS" dnf remove -y $z | tee -a "$SOFTLOG_FILE"
				else
				kdialog --passivepopup "Хост $m:\nПакет $z не был ранее установлен, пропуск обработки!" 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
				echo "Хост $m - пакет $z не был ранее установлен, пропуск обработки!" >> "$SOFTLOG_FILE"
				fi
			esac
		done
		fi
		fi
	done
	kdialog --yesno 'Команды выполнены!\nПосмотреть подробные результаты ?' --title 'Мостех.Помощь' --icon 'mostech-help-utility' --yes-label 'Да, смотреть подробнее' --no-label 'Нет, выход из программы'
	if [[ $? -eq 0 ]]; then
	kdialog --title 'Мостех.Помощь' --icon 'mostech-help-utility' --geometry 700x700 --textbox /dev/stdin < "$SOFTLOG_FILE"; rm -f "$SOFTLOG_FILE"
	else
	kdialog --passivepopup 'Выход из программы...' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; rm -f "$SOFTLOG_FILE"; exit 0;
	fi
else
	kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;
fi;;
esac
}
####################################################################################################################

# Выбор режима работы с хостами (одиночный / множественный)
select_hosts_mode() {
select_host=$(kdialog --radiolist 'Выберите режим проведения работ:' --geometry 350x200 --title 'Мостех.Помощь' --icon 'mostech-help-utility' 1 'Для одного хоста' off 2 'Для нескольких хостов' off)
case $select_host in
	1) network_diagnostic2; MULTI_HOST_MODE=0;;
	2) kdialog --passivepopup 'Выполняется поиск анкеты...' 1 --title 'Мостех.Помощь' --icon 'mostech-help-utility';
	check_template=$(find "$PC_TEMPLATE" -name '*.csv')
	template_count=$(find "$PC_TEMPLATE" -name '*.csv' | wc -l)
	if [[ -z $check_template ]]; then kdialog --error "Анкета формата csv не найдена в директории $PC_TEMPLATE !" --title 'Мостех.Помощь' --icon 'mostech-help-utility'; select_hosts_mode;
	elif [[ $template_count -gt 1 ]]; then kdialog --error "В директории $PC_TEMPLATE больше 1 анкеты! Удалите лишние!" --title 'Мостех.Помощь' --icon 'mostech-help-utility'; select_hosts_mode;
	fi;
	MULTI_HOST_MODE=1
	get_logpass
	;;
	*) kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;;
esac
}

# Выбор типа удаленного подключения к пользователю
remote_connection_type() {
conn_type=$(kdialog --radiolist 'Выберите тип подключения:' --geometry 350x150 --title 'Мостех.Помощь' --icon 'mostech-help-utility' 1 'SSH (Удаленная консоль)' off  2 'VNC (Удаленный рабочий стол)' off)
case $conn_type in
	1) ssh_connection;;
	2) vnc_connection;;
	*) kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;;
esac
}

# Выбор процедуры работы с ПО
program_action() {
soft_action=$(kdialog --radiolist 'Выберите процедуру:' --geometry 350x150 --title 'Мостех.Помощь' --icon 'mostech-help-utility' 1 'Установка ПО' off  2 'Переустановка ПО' off 3 'Удаление ПО' off)
case $soft_action in
	1) select_hosts_mode; inst_pkgs;;
	2) select_hosts_mode; reinst_pkgs;;
	3) select_hosts_mode; unist_pkgs;;
	*) kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;;
esac
}

# Меню админа
set_action() {
while true; do
actions=$(kdialog --radiolist 'Выберите доступное действие:' --geometry 450x230 --title 'Мостех.Помощь' --icon 'mostech-help-utility' 1 'Сетевая диагностика ДО хоста' off  2 'Сетевая диагностика С хоста до HQ и OWA' off 3 'Выгрузка логов (подробный режим)' off 4 'Работа с ПО (программы)' off 5 'Удаленное подключение' off)
case $actions in
	1) network_diagnostic1;;
	2) network_diagnostic2; remote_net_diag;;
	3) network_diagnostic2; logs_interval; logs_upload;;
	4) program_action;;
	5) remote_connection_type;;
	*) kdialog --passivepopup 'Отмена!' 2 --title 'Мостех.Помощь' --icon 'mostech-help-utility'; exit 1;;
esac
done
}

if [[ ! -d "$RESULTS" ]]; then mkdir "$RESULTS" && chown -R $KDE_LOGIN "$RESULTS"; fi
if [[ ! -d "$PC_TEMPLATE" ]]; then mkdir "$PC_TEMPLATE" && chown -R $KDE_LOGIN "$PC_TEMPLATE"; fi
func_check_krdc_install
set_action
