Exemplo n.º 1
0
        def auto_install():
            global console, check_flash
            # поиск обновлений без указанного имени
            logger.info("Not found key")
            console = False
            status_bar['value'] = 20
            status_bar.update()
            # Проверка установлена ли флешка
            check_flash = search_flash(system_path_media, upd_path_in_flash)
            status_bar['value'] = 30
            status_bar.update()
            # поиск обновления
            name_update = Downloader.get_update_name(check_flash, system_name,
                                                     ftp_path_task)
            status_bar['value'] = 40
            status_bar.update()

            if name_update:
                # если было задание на сервере
                Downloader.download_upd(check_flash, name_update, ftp_path_upd)
                status_bar['value'] = 60
                status_bar.update()
                Install.unzip_upd(tmp_catalog_for_install_updates)
                status_bar['value'] = 80
                status_bar.update()
                Install.search_local_upd_for_install(
                    check_flash, tmp_catalog_for_install_updates)
            else:
                Gui.show_message("Ошибка",
                                 "Обновления для этой кассы\nне найдены")

            status_bar['value'] = 100
            status_bar.update()
Exemplo n.º 2
0
def auto_search(terminal):
    # получаем состояние, есть в системе флешка или нет
    status_flash = check_flash_card_connection.search_flash(
        system_path_media, upd_path_in_flash)
    # узнаем имя обновления
    name_update = Downloader.get_update_name(status_flash, system_name,
                                             ftp_path_task)

    if name_update:
        # если имя обновления найдено
        if not terminal:
            # Если запуск не из консоли выводим сообщение
            Gui.show_message(
                "Установка обновления",
                "Найдено обновление\n{}\nУстановить?".format(name_update))

        bar.update(20)
        # качаем архив во временный каталог для установки
        Downloader.download_upd(status_flash, name_update, ftp_path_upd)
        bar.update(40)
        # разархивируем
        Install.unzip_upd(tmp_catalog_for_install_updates)
        bar.update(60)
        # устаналиваем обновление
        Install.search_local_upd_for_install(status_flash,
                                             tmp_catalog_for_install_updates)
        bar.finish()
    else:
        if not terminal:
            Gui.show_message('Ошибка', 'Обновления не найдены')
        raise SystemExit("Обновления не найдены")
        def auto_search(terminal):
            status_flash = check_flash_card_connection.search_flash(
                system_path_media, upd_path_in_flash)
            name_update = get_update_name(status_flash, system_name,
                                          ftp_path_task)

            if name_update:
                if not terminal:
                    show_message(
                        "Установка обновления",
                        "Найдено обновление\n{}\nУстановить?".format(
                            name_update))

                bar.update(20)
                download_arch_updates(status_flash, name_update, ftp_path_upd)
                bar.update(40)
                unzip_upd(tmp_catalog_for_install_updates)
                bar.update(60)
                search_local_upd_for_install(status_flash,
                                             tmp_catalog_for_install_updates)
                bar.finish()
            else:
                if not terminal:
                    show_message('Ошибка', 'Обновления не найдены')
                raise SystemExit("Обновления не найдены")
    def auto_install():
        global console, check_flash
        logger.info("Not found key")
        console = False
        status_bar['value'] = 20
        status_bar.update()
        check_flash = check_flash_card_connection.search_flash(
            system_path_media, upd_path_in_flash)
        status_bar['value'] = 30
        status_bar.update()
        name_update = get_update_name(check_flash, system_name, ftp_path_task)
        status_bar['value'] = 40
        status_bar.update()

        if name_update:
            download_arch_updates(check_flash, name_update, ftp_path_upd)
            status_bar['value'] = 60
            status_bar.update()
            unzip_upd(tmp_catalog_for_install_updates)
            status_bar['value'] = 80
            status_bar.update()
            search_local_upd_for_install(check_flash,
                                         tmp_catalog_for_install_updates)
        else:
            show_message("Ошибка", "Обновления для этой кассы\nне найдены")

        status_bar['value'] = 100
        status_bar.update()
Exemplo n.º 5
0
    def install_upd(path_name, enable_flash):
        global tmp_log, unload_ftp

        def search_install_log(path):
            log = ''

            # если обновление для системы ищем любой файл.log читаем его и записываем себе в переменную
            if path != "/home/cblock/":
                os.chdir(path.split('_')[1])
                for file_log in os.listdir(path):
                    if not file_log.find('.log') == -1:
                        with open("./{}/{}".format(path, file_log),
                                  'r') as file:
                            log = file.read()
            else:
                # если обновление для БУ ищем любой файл.log даем ему права, читаем его и записываем себе в переменную
                os.chdir(path)
                for file_log in os.listdir(path):
                    if not file_log.find('.log') == -1:
                        os.system(
                            'sudo -u cblock chmod 777 {}'.format(file_log))
                        with open("{}{}".format(path, file_log), 'r') as file:
                            log = file.read()
            os.chdir(tmp_catalog_for_install_updates)

            # Возвращаем все что записали в переменную
            return log

        def install_pc(name_upd_pc):
            result_installation_pc = 0
            path_upd_name = name_upd_pc.split(".")[0]
            name_update = path_upd_name.split('_')[1]
            # Раздаем права всем файлам из архива с обновлением
            for file in os.listdir(path_upd_name):
                os.chmod("{}/{}".format(path_upd_name, file), 0o0777)
                logger.info('Chmod 777 {}/{}'.format(path_upd_name, file))
            os.chdir(path_upd_name)
            # Запускаем upd****.sh
            start_upd = Popen('./{}.sh'.format(name_update),
                              shell=True,
                              stdout=PIPE,
                              stderr=PIPE)
            start_upd.wait()
            stdout_log = start_upd.communicate()[1].decode()
            # Проверяем код возврата
            if not start_upd.returncode == 0:
                logger.error('Error install UPD {}.sh,\nError:\n{}.'.format(
                    name_update, stdout_log))
                result_installation_pc = 1
            else:
                logger.info('Successfully install: {}.sh'.format(name_update))
            os.chdir(tmp_catalog_for_install_updates)
            # Возвращаем результат установки
            return result_installation_pc

        def install_old_pc(path_upd_name):
            result_installation_pc = 0
            upd_name = path_upd_name.split('/')[-1]
            # Раздаем права всем файлам из архива с обновлением
            for file in os.listdir(path_upd_name):
                os.chmod("{}/{}".format(path_upd_name, file), 0o0777)
                logger.info('Chmod 777 {}/{}'.format(path_upd_name, file))
            os.chdir(path_upd_name)
            # Запускаем upd****.sh
            start_upd = Popen('./{}.sh'.format(upd_name),
                              shell=True,
                              stdout=PIPE,
                              stderr=PIPE)
            start_upd.wait()
            stdout_log = start_upd.communicate()[1].decode()
            # Проверяем код возврата
            if not start_upd.returncode == 0:
                logger.error('Error install UPD {}.sh,\nError:\n{}.'.format(
                    upd_name, stdout_log))
                result_installation_pc = 1
            else:
                logger.info('Successfully install: {}.sh'.format(upd_name))
            os.chdir(tmp_catalog_for_install_updates)
            # Возвращаем результат установки
            return result_installation_pc

        def install_cu(name_upd_cu, flash=False):
            result_installation_cb = 0
            path_upd_name = name_upd_cu.split(".")[0]

            for file in os.listdir(path_upd_name):
                # копируем файл для БУ в папку /home/cblock/
                upd_dir_name = file.split('.')[0]
                Downloader.copy_file("{}/{}".format(path_upd_name, file),
                                     path_to_install_CU)
                logger.info("{} copy to /home/cblock/".format(file))
                try:
                    # Проверяем БУ доступно ли
                    if requests.get('http://{}/comm.php'.format(
                            parameters_ini.get('Global', 'host_cu')),
                                    timeout=5).ok:
                        # Если да, то отправляем команду для обновления
                        connect = requests.post(
                            'http://{}/comm.php'.format(
                                parameters_ini.get('Global', 'host_cu')),
                            '<?xml version=\"1.0\" encoding=\"UTF-8\"?><AutoUpdate><Command>'
                            'AutoUpdate</Command><FileURL>FTP://cblock:[email protected]//'
                            '/home/cblock'
                            '</FileURL><FileDir></FileDir><FileName>{}</FileName>'
                            '</AutoUpdate>'.format(file))

                        # Удаляем файл с обновлением
                        os.remove("{}/{}".format(path_to_install_CU, file))
                        logger.info("delete /home/cblock/{}".format(file))
                        # Получаем результат установки обновления
                        response_xml = minidom.parseString(connect.text)

                        if response_xml.getElementsByTagName('ErrorDesc'):
                            logger.info('Error response CU:\n {}'.format(
                                connect.text))
                            result_installation_cb = 1
                        else:
                            logger.info(
                                'Successfully install in CU ==> {}'.format(
                                    upd_dir_name))
                except Exception as request_error:
                    Gui.show_message(
                        'Ошибка',
                        'Ошибка при загрузке обновления в Блок управления.\n\n{}'
                        .format(request_error))
                    logger.exception(
                        'Error response CU\n{}'.format(request_error))
                    result_installation_cb = 1
            if not flash:
                # Если ставили не с флешки пробуем удалит задание на сервере
                ftp_task_path = parameters_ini.get('Global', 'ftp_path_tasks')
                unload_ftp.del_task(
                    "{}_{}.new_task".format(system_name,
                                            path_upd_name.split("_")[1]),
                    ftp_task_path)
            os.chdir(tmp_catalog_for_install_updates)
            return result_installation_cb

        def unzip_update(name):
            with zipfile.ZipFile(name, 'r') as result_zip:
                logger.info('Open Zip {}'.format(name))
                result_zip.extractall(name.split(".")[0])
                result_zip.close()
                logger.info('Successfully unzip: {}'.format(name))
                os.remove(name)

        result_install = 0
        result_install_cu = 0
        result_install_pc = 0
        ftp_path = parameters_ini.get('Global', 'ftp_path_logs')

        try:
            tmp_log = ''
            if not enable_flash:
                unload_ftp = FtpClient(ftp_path=ftp_path)
            # If len terminal number == 8, start upd from old KSA
            if len(cash_ini.get('GLOBAL', 'TerninalNumber')) == 8:
                result_install = install_old_pc(path_name)
                for file_log in os.listdir(path_name):
                    if not file_log.find('.log') == -1:
                        with open("{}/{}".format(path_name, file_log),
                                  'r') as file:
                            tmp_log += file.read()
                if result_install != 0:
                    result_install = 'Fail_PC'
            else:
                # If len terminal number != 8, start upd from new KSA
                for name_upd in os.listdir(path_name):
                    os.chdir(path_name)
                    # Если в имени файла CU запускаем установку для БУ
                    if name_upd.startswith("CU"):
                        unzip_update(name_upd)
                        result_install_cu = install_cu(name_upd, enable_flash)
                        # Записываем все логи в переменную
                        tmp_log += search_install_log(name_upd.split('.')[0])
                        tmp_log += search_install_log("/home/cblock/")
                        if result_install_cu != 0:
                            result_install_cu = 'Fail_CU'

                    # Если в имени файла CU запускаем установку для PC
                    elif name_upd.startswith("PC"):
                        unzip_update(name_upd)
                        result_install_pc = install_pc(name_upd)
                        tmp_log += search_install_log(name_upd.split('.')[0])
                        tmp_log += search_install_log("/home/cblock/")
                        if result_install_pc != 0:
                            result_install_pc = 'Fail_PC'
                    # Если при какой либо установке была ошибка
                    if result_install != result_install_cu or result_install != result_install_pc:
                        result_install = '{}_{}'.format(
                            result_install_cu, result_install_pc)
                        upd_path = (name_upd.split('.')[0]).split('_')[1]
                        new_task = '{}_({})_{}'.format(result_install,
                                                       system_name, upd_path)
                        # Если ставили не с флешки
                        if not enable_flash:
                            # создаем ошибочное задание
                            file_task = open(new_task, "w")
                            file_task.close()
                            # Выгружаем на сервер вместо того что скачали для наглядности что была ошибка
                            ftp_path = parameters_ini.get(
                                'Global', 'ftp_path_tasks')
                            unload_ftp.upload_error_task(new_task, ftp_path)
                        else:
                            # А если с флешки просто логируем
                            logger.info(new_task)

            if tmp_log:
                # Если переменная которая собирала у всех логи, не пустая
                log_name = "/home/cashier/scripts/Admin_updater/Log/{}.log".format(
                    path_name.split('/')[-1])
                # содаем именной лог по обновлению
                with open(log_name, 'w') as upd_log:
                    upd_log.write(tmp_log)

                # Если ставили с сервера, выгружаем туда лог
                if not enable_flash:
                    unload_ftp.upload_log(log_name)
                else:
                    # Если с флешки копируем на нее и удаляем с системы
                    Downloader.copy_file(
                        log_name,
                        search_flash(system_path_media, upd_path_in_flash))
                    os.remove(log_name)
            else:
                # Если переменная которая собирала у всех логи, пустая формируем его сами
                log_name = "/home/cashier/scripts/Admin_updater/Log/{}.log".format(
                    path_name.split('/')[-1])
                with open(log_name, 'w') as log:
                    log.write('{} {} {} Result install {}'.format(
                        path_name.split('/')[-1], time_upload_log, now_time,
                        result_install))

                if not enable_flash:
                    unload_ftp = FtpClient(ftp_path=ftp_path)
                    unload_ftp.upload_log(log_name)

            # Записываем в Исторический лог результат установки и что ставилось
            with open(history_log, 'a') as history:
                history.write('\n{} {} {} Result install {}'.format(
                    path_name.split('/')[-1], time_upload_log, now_time,
                    result_install))
            os.chdir(tmp_catalog_for_install_updates)
            # Возвращаем Общий результат
            return result_install

        except Exception as global_error:
            logger.exception('Unexpected error:\n{}'.format(global_error))
            Gui.show_message("Ошибка", global_error)
            raise SystemExit(global_error)
Exemplo n.º 6
0
class Downloader:
    def __init__(self):
        pass

    status_flash = search_flash(system_path_media, upd_path_in_flash)

    @staticmethod
    def copy_file(name_file, path):
        """ This function copy files. """
        try:
            if not os.path.exists(path):
                os.makedirs(path)
            shutil.copy(name_file, path)
        except OSError as os_error:
            logger.exception(
                'Error copy file: {}\n Exit script.'.format(os_error))
            raise SystemExit(
                "ошибка при копировании файлов\nСмотрите лог файл")
        except Exception as global_error:
            logger.exception('Unexpected error:\n{}'.format(global_error))

    @staticmethod
    def check_local_upd(path):
        # Проверка наличия обновлений для установки во временном каталоге.
        for name_file in path:
            if name_file.startswith('upd'):
                return True
            else:
                return False

    @staticmethod
    def get_update_name(flash, name, path_task_in_ftp):
        """ This function search update name in FTP or flash card. """
        def update_name_in_flash(path_upd_in_flash):
            # Поиск обновления на флешке
            updates_list = []

            list_updates_in_flash = os.listdir(path_upd_in_flash)
            for element in list_updates_in_flash:
                if element.endswith('.zip'):
                    updates_list.append(element)
            list_updates_in_flash = sorted(updates_list, reverse=True)
            name_upd = list_updates_in_flash[0]
            logger.info('Flash found update {}'.format(name_upd))
            return name_upd

        def update_name_in_ftp(name_system, path_task):
            # Поиск задания на обновление на сервере
            list_updates_for_install = []

            count_task = 0
            try:
                # Получаем список всех заданий на сервере
                list_task = FtpClient(ftp_path=path_task).path_list
            except Exception as fail:
                raise ConnectionError(fail)

            for task in list_task:
                # Если в имени файла есть номер КСА и задание заканчивается на new_task добавляем его в список для установки
                if task.split("_")[0] == name_system and task.endswith(
                        '.new_task'):
                    count_task += 1
                    logger.error('Found task in Ftp server: {}'.format(task))
                    list_updates_for_install.append(
                        task.split('_')[1].split('.')[0])
            if count_task == 0:
                logger.error(
                    'NO updates file found on Ftp server for: Terminal Number({})'
                    .format(system_name))
            return sorted(list_updates_for_install)

        try:
            if not flash:
                # если нет флешки ищем задание на сервере
                update_name_to_install = update_name_in_ftp(
                    name, path_task_in_ftp)
            else:
                # если флешка есть ищем на ней
                update_name_to_install = update_name_in_flash(flash)
            return update_name_to_install

        except IndexError as index_err:
            logger.error(index_err)
        except ConnectionError as connect_error:
            raise ConnectionError(connect_error)
        except Exception as all_error:
            raise Exception(all_error)

    @staticmethod
    def download_upd(flash, check_local_update, updates_name):
        if check_local_update:
            if flash:
                # если флешка вставлена
                for file in os.listdir(flash):
                    # если файл на флешке для установки такой же как и сохраненный локально, удаляем локальный
                    if file in tmp_catalog_for_install_updates:
                        os.remove('{}/{}'.format(flash, file))
            else:
                # если флешка не вставлена
                for file in FtpClient(ftp_path=ftp_path_task).path_list:
                    if file.split("_")[0] == system_name and file.endswith(
                            '.new_task'):
                        # если файл на FTP для установки такой же как и сохраненный локально, удаляем локальный
                        if file.split(
                                "_")[1] in tmp_catalog_for_install_updates:
                            os.remove('{}/{}'.format(flash,
                                                     file.split("_")[1]))

        upd_in_flash = "{}/{}".format(flash, updates_name)

        # создаем временный каталог
        os.makedirs(tmp_catalog_for_install_updates, mode=0o0777)
        # если нет флешки качаем с сервера
        if not flash:
            # Создаем экземпляр класса FtpClient
            download_update = FtpClient(ftp_path=ftp_path_upd)
            list_upd = download_update.path_list
            logger.info('Updates in FTP server\n{}'.format(list_upd))
            # проходим по всем доступным для скачивания обновлениям
            for download_name in updates_name:
                logger.info("{}.zip".format(download_name))
                # если обновление есть в списке для установки
                if "{}.zip".format(download_name) in list_upd:
                    # качаем его
                    download_update.download_upd(download_name)
                    logger.info(
                        'Successfully download {}'.format(download_name))
                    # удаляем задание с сервера
                    ftp_task_path = parameters_ini.get('Global',
                                                       'ftp_path_tasks')
                    download_update.del_task(
                        "{}_{}.new_task".format(system_name,
                                                download_name.split(".")[0]),
                        ftp_task_path)
                else:
                    logger.info('Updates not found in updates list')
                    raise SystemExit("Обновления не найдены")
        else:
            # если есть флешка копируем с нее
            Install.copy_file(upd_in_flash, tmp_catalog_for_install_updates)
            logger.info('{} copied to {}'.format(
                updates_name, tmp_catalog_for_install_updates))
def install_upd(path_name, enable_flash):
    global tmp_log, unload_ftp

    def search_install_log(path):
        log = ''
        if path != "/home/cblock/":
            os.chdir(path.split('_')[1])
            for file_log in os.listdir(path):
                if not file_log.find('.log') == -1:
                    with open("./{}/{}".format(path, file_log), 'r') as file:
                        log = file.read()
        else:
            os.chdir(path)
            for file_log in os.listdir(path):
                if not file_log.find('.log') == -1:
                    os.system('sudo -u cblock chmod 777 {}'.format(file_log))
                    with open("{}{}".format(path, file_log), 'r') as file:
                        log = file.read()
        os.chdir(tmp_catalog_for_install_updates)
        return log

    def install_pc(name_upd_pc):
        result_installation_pc = 0
        path_upd_name = name_upd_pc.split(".")[0]
        name_update = path_upd_name.split('_')[1]
        for file in os.listdir(path_upd_name):
            os.chmod("{}/{}".format(path_upd_name, file), 0o0777)
            logger.info('Chmod 777 {}/{}'.format(path_upd_name, file))
        os.chdir(path_upd_name)
        start_upd = Popen('./{}.sh'.format(name_update),
                          shell=True,
                          stdout=PIPE,
                          stderr=PIPE)
        start_upd.wait()
        stdout_log = start_upd.communicate()[1].decode()
        if not start_upd.returncode == 0:
            logger.error('Error install UPD {}.sh,\nError:\n{}.'.format(
                name_update, stdout_log))
            result_installation_pc = 1
        else:
            logger.info('Successfully install: {}.sh'.format(name_update))
        os.chdir(tmp_catalog_for_install_updates)
        return result_installation_pc

    def install_old_pc(path_upd_name):
        result_installation_pc = 0
        upd_name = path_upd_name.split('/')[-1]
        for file in os.listdir(path_upd_name):
            os.chmod("{}/{}".format(path_upd_name, file), 0o0777)
            logger.info('Chmod 777 {}/{}'.format(path_upd_name, file))
        os.chdir(path_upd_name)
        os.getcwd()
        start_upd = Popen('./{}.sh'.format(upd_name),
                          shell=True,
                          stdout=PIPE,
                          stderr=PIPE)
        start_upd.wait()
        stdout_log = start_upd.communicate()[1].decode()
        if not start_upd.returncode == 0:
            logger.error('Error install UPD {}.sh,\nError:\n{}.'.format(
                upd_name, stdout_log))
            result_installation_pc = 1
        else:
            logger.info('Successfully install: {}.sh'.format(upd_name))
        os.chdir(tmp_catalog_for_install_updates)
        return result_installation_pc

    def install_cu(name_upd_cb, flash=False):
        result_installation_cb = 0
        path_upd_name = name_upd_cb.split(".")[0]
        for file in os.listdir(path_upd_name):
            upd_dir_name = file.split('.')[0]
            copy_file("{}/{}".format(path_upd_name, file), path_to_install_CU)
            logger.info("{} copy to /home/cblock/".format(file))
            try:
                if requests.get('http://{}/comm.php'.format(
                        parameters_ini.get('Global', 'host_cu')),
                                timeout=5).ok:
                    connect = requests.post(
                        'http://{}/comm.php'.format(
                            parameters_ini.get('Global', 'host_cu')),
                        '<?xml version=\"1.0\" encoding=\"UTF-8\"?><AutoUpdate><Command>'
                        'AutoUpdate</Command><FileURL>FTP://cblock:[email protected]//'
                        '/home/cblock'
                        '</FileURL><FileDir></FileDir><FileName>{}</FileName>'
                        '</AutoUpdate>'.format(file))

                    os.remove("{}/{}".format(path_to_install_CU, file))
                    logger.info("delete /home/cblock/{}".format(file))
                    response_xml = minidom.parseString(connect.text)
                    if response_xml.getElementsByTagName('ErrorDesc'):
                        logger.info('Error response CU:\n {}'.format(
                            connect.text))
                        result_installation_cb = 1
                    else:
                        logger.info('Successfully install in CU ==> {}'.format(
                            upd_dir_name))
            except Exception as request_error:
                show_message(
                    'Ошибка',
                    'Ошибка при загрузке обновления в Блок управления.\n\n{}'.
                    format(request_error))
                logger.exception('Error response CU\n{}'.format(request_error))
                result_installation_cb = 1
        if not flash:
            ftp_task_path = parameters_ini.get('Global', 'ftp_path_tasks')
            unload_ftp.del_task(
                "{}_{}.new_task".format(system_name,
                                        path_upd_name.split("_")[1]),
                ftp_task_path)
        os.chdir(tmp_catalog_for_install_updates)
        return result_installation_cb

    def unzip_update(name):
        with zipfile.ZipFile(name, 'r') as result_zip:
            logger.info('Open Zip {}'.format(name))
            result_zip.extractall(name.split(".")[0])
            result_zip.close()
            logger.info('Successfully unzip: {}'.format(name))
            os.remove(name)

    result_install = 0
    result_install_cu = 0
    result_install_pc = 0
    ftp_path = parameters_ini.get('Global', 'ftp_path_logs')
    try:
        tmp_log = ''
        if not enable_flash:
            unload_ftp = FtpClient(ftp_path=ftp_path)
        if len(cash_ini.get('GLOBAL', 'TerninalNumber')) == 8:
            # If len terminal number == 8, start upd from old KSA
            # os.chdir(path_name)
            result_install = install_old_pc(path_name)
            for file_log in os.listdir(path_name):
                if not file_log.find('.log') == -1:
                    with open("./{}/{}".format(path_name, file_log),
                              'r') as file:
                        tmp_log += file.read()
            if result_install != 0:
                result_install = 'Fail_PC'
        else:
            # If len terminal number != 8, start upd from new KSA
            for name_upd in os.listdir(path_name):
                os.chdir(path_name)
                if name_upd.startswith("CU"):
                    unzip_update(name_upd)
                    result_install_cu = install_cu(name_upd, enable_flash)
                    tmp_log += search_install_log(name_upd.split('.')[0])
                    tmp_log += search_install_log("/home/cblock/")
                    if result_install_cu != 0:
                        result_install_cu = 'Fail_CU'
                elif name_upd.startswith("PC"):
                    unzip_update(name_upd)
                    result_install_pc = install_pc(name_upd)
                    tmp_log += search_install_log(name_upd.split('.')[0])
                    tmp_log += search_install_log("/home/cblock/")
                    if result_install_pc != 0:
                        result_install_pc = 'Fail_PC'
                if result_install != result_install_cu or result_install != result_install_pc:
                    result_install = '{}_{}'.format(result_install_cu,
                                                    result_install_pc)
                    upd_path = (name_upd.split('.')[0]).split('_')[1]
                    new_task = '{}_({})_{}'.format(result_install, system_name,
                                                   upd_path)
                    if not enable_flash:
                        file_task = open(new_task, "w")
                        file_task.close()
                        ftp_path = parameters_ini.get('Global',
                                                      'ftp_path_tasks')
                        unload_ftp.upload_error_task(new_task, ftp_path)
                    else:
                        logger.info(new_task)
        if tmp_log:
            log_name = "/home/cashier/scripts/Admin_updater/Log/{}.log".format(
                path_name.split('/')[-1])
            with open(log_name, 'w') as upd_log:
                upd_log.write(tmp_log)
            if not enable_flash:
                unload_ftp.upload_log(log_name)
            else:
                copy_file(
                    log_name,
                    check_flash_card_connection.search_flash(
                        system_path_media, upd_path_in_flash))
                os.remove(log_name)
        else:
            log_name = "/home/cashier/scripts/Admin_updater/Log/{}.log".format(
                path_name.split('/')[-1])
            with open(log_name, 'w') as log:
                log.write('{} {} {} Result install {}'.format(
                    path_name.split('/')[-1], time_upload_log, now_time,
                    result_install))

            if not enable_flash:
                unload_ftp = FtpClient(ftp_path=ftp_path)
                unload_ftp.upload_log(log_name)
        with open(history_log, 'a') as history:
            history.write('\n{} {} {} Result install {}'.format(
                path_name.split('/')[-1], time_upload_log, now_time,
                result_install))
        os.chdir(tmp_catalog_for_install_updates)
        return result_install
    except Exception as global_error:
        logger.exception('Unexpected error:\n{}'.format(global_error))
        show_message("Ошибка", global_error)
        raise SystemExit(global_error)