Page tree
Skip to end of metadata
Go to start of metadata

Основные функции

Выключение опроса монитора при старте системы Trassir OS.

Установка

  • Перейти в автоматизацию, нажать «Загрузить пример» и выбрать «Из файла», указав путь к скрипту.
  • Снять галочку «Включить скрипт» и нажать сохранить.
  • Запускается, как только установился на сервер и была нажата кнопка "сохранить запустить"
  • Скрипт устанавливает правило, которое не снимает настройки монитора с него, а ставит стандартные.


Таким образом при использовании конвертеров\удлинителей мы сможем получить картинку, не получая отклика по настройкам от монитора.


 code
# Выключение опроса монитора при старте системы Trassir OS.
# 
# После успешного запуска, счетчик запусков будет равен 1
#
# Version: 1.0
# Author: A.A.Trubilin, DSSL
# E-mail: a.trubilin@dssl.ru
"""
<parameters>
    <company>AATrubilin</company>
    <title>shutdown_check_monitor</title>
    <version>1.0</version>
</parameters>
"""
import re
import os
import shutil

SETTINGS_FILE = "/home/trassir/nvr-system-settings.ini"
RESTORE_BACKUP = "False"
PARAMETR_KEY = "skip_edit_check"
PARAMETR_VALUE = "1"

if os.name == "nt":
    # Check if script runs on TrassirOS
    raise OSError("This script is unavailable for WinOS")


def run_count(x):
    """Set run count"""
    try:
        x = int(x)
    except ValueError:
        x = -1
    stats()["run_count"] = x


def create_backup(settings_file):
    """Create backup file

    Args:
        settings_file (str) : Setting file full path
    """
    if not os.path.isfile(settings_file):
        # Check if file exists
        raise NameError("File {} not found".format(settings_file))

    backup_file = "{}.backup".format(settings_file)
    if not os.path.isfile(backup_file):
        shutil.copy2(settings_file, backup_file)
        message("Backup saved to {}").format(backup_file)
        return backup_file


def restore_backup(settings_file):
    """Restore file from backup

    Args:
        settings_file (str) : Setting file full path
    """
    backup_file = "{}.backup".format(settings_file)

    if not os.path.isfile(backup_file):
        # Check if file exists
        raise NameError("Backup {} not found".format(settings_file))

    if os.path.isfile(backup_file):
        shutil.copy2(backup_file, settings_file)
        message("Backup restored to {}").format(backup_file)
        return settings_file


def set_settings(settings_file, key, value):
    """Set new settings or replace old

    Args:
        settings_file (str) : Setting file full path
        key (str) : Setting key
        value (str) : Setting value

    Raised:
        NameError if file not found
        ValueError if parameter or value not setted
    """
    if not os.path.isfile(settings_file):
        # Check if file exists
        raise NameError("File {} not found".format(settings_file))

    if not key:
        # Check if parameter setted
        raise ValueError("Empty parameter key")

    if not value:
        # Check if value setted
        raise ValueError("Empty parameter value")

    regex_pattern = r"{}(.*)=(.*)".format(key)
    new_data = "{}={}".format(key, value)
    with open(settings_file, "r+") as setting_file:
        settings_data = setting_file.read()
        setting_file.seek(0)
        if re.search(regex_pattern, settings_data):
            # If found parameter in setting file - replace it
            settings_data_new = re.sub(regex_pattern, new_data, settings_data)
        else:
            # Else just add to end of file
            settings_data_new = settings_data + "\n{}\n".format(new_data)
        setting_file.write(settings_data_new)
        setting_file.truncate()
        message("Setting {} success".format(new_data))
        return True


run_count(0)

if RESTORE_BACKUP:
    # If Restore backup is checked - run only restore
    restore_backup(SETTINGS_FILE)
else:
    create_backup(SETTINGS_FILE)  # Create backup
    set_settings(SETTINGS_FILE, PARAMETR_KEY, PARAMETR_VALUE)  # Set new key, value

timeout(500, lambda: run_count(1))


Скачать



  • No labels