Перейти к основному содержимому

Как автоматически запускать агент Indigo

Если вам необходимо, чтобы агент Indigo запускался автоматически при каждой перезагрузке устройства, следуйте инструкциям для вашей операционной системы ниже.

Важно: Требование к дисплею

Для работы агента Indigo требуется дисплей. Если в вашей системе нет физического дисплея, вам потребуется использовать виртуальный дисплей. Например, вы можете использовать xvfb-run:

xvfb-run indigo

Windows

Следующий скрипт Python можно использовать для автоматического запуска агента Indigo в Windows. Вам нужно будет обеспечить запуск этого скрипта при старте системы, например, поместив его в папку автозагрузки Windows или создав Запланированное Задание.

Конфигурация пути

Скрипт пытается динамически определить ваше имя пользователя для пути к агенту. Однако вы должны проверить переменную exe_path в скрипте, чтобы она соответствовала фактическому месту установки agent.exe для Indigo в вашей системе. Предполагается структура пути по умолчанию.

import os
import subprocess

def connect_agent():
username = os.getlogin()
# ВАЖНО: Убедитесь, что этот путь правильный для вашей установки Indigo.
# Имя пользователя подставляется динамически, но базовый путь 'AppData\\Local\\indigo\\agent.exe' может отличаться.
exe_path = f'C:\\Users\\{username}\\AppData\\Local\\indigo\\agent.exe'

print(f"Попытка запуска агента Indigo из: {exe_path}")

try:
# subprocess.run будет ждать завершения команды.
# Если agent.exe — это программа запуска, которая быстро завершается с кодом 0, это нормально.
# Если agent.exe — это основной длительно работающий процесс, .run() будет блокироваться до закрытия агента.
# Для фонового запуска subprocess.Popen может быть более подходящим.
# Исходный скрипт подразумевал проверку кода возврата, поэтому здесь используется .run().
agent_process = subprocess.run([exe_path], capture_output=True, text=True, check=False)

if agent_process.returncode == 0:
print("Агент Indigo успешно запущен.")
# Опционально можно вывести stdout, если агент предоставляет полезную информацию при запуске:
# if agent_process.stdout:
# print(f"Вывод агента: {agent_process.stdout.strip()}")
else:
print(f"Не удалось запустить агент Indigo. Код возврата: {agent_process.returncode}")
if agent_process.stderr:
print(f"Детали ошибки: {agent_process.stderr.strip()}")
if agent_process.stdout: # Также логируем stdout в случае ошибки, может содержать информацию
print(f"Вывод (stdout): {agent_process.stdout.strip()}")

except FileNotFoundError:
print(f"Ошибка: Исполняемый файл агента Indigo не найден по пути '{exe_path}'. Пожалуйста, проверьте путь.")
except Exception as e:
print(f"Произошла непредвиденная ошибка: {e}")

if __name__ == "__main__":
connect_agent()

macOS

Используйте следующий скрипт Python для автоматического запуска агента Indigo в macOS. Чтобы этот скрипт запускался автоматически при старте системы, вы можете создать для него LaunchAgent.

Путь к приложению

Скрипт предполагает, что Indigo установлено в стандартную директорию /Applications/ как Indigo X.app. Если ваш путь установки отличается, пожалуйста, обновите переменную app_path в скрипте.

import subprocess

def connect_agent():
# Убедитесь, что это правильное имя и путь для вашего приложения Indigo
app_path = '/Applications/Indigo X.app'

print(f"Попытка открыть агент Indigo: {app_path}")

try:
# Команда 'open' используется для запуска приложений в macOS.
# Обычно она возвращается быстро.
process = subprocess.run(['open', app_path], capture_output=True, text=True, check=False)

if process.returncode == 0:
print("Команда для запуска агента Indigo была успешной.")
# Примечание: возврат 0 от 'open' означает, что команда на открытие была успешной.
# Это не гарантирует, что само приложение запустилось без внутренних ошибок.
# Для более детальных проверок могут потребоваться AppleScript или другие специфичные для приложения запросы.
else:
print(f"Не удалось выполнить команду для запуска агента Indigo. Код возврата: {process.returncode}")
if process.stderr:
print(f"Детали ошибки: {process.stderr.strip()}")
if process.stdout:
print(f"Вывод (stdout): {process.stdout.strip()}")

except FileNotFoundError:
# Эта ошибка обычно означает, что сама команда 'open' не найдена (крайне маловероятно в macOS)
# или есть проблема с тем, как сконструирована команда (здесь это не так).
# Более вероятно, если app_path неверен, 'open' все равно может запуститься, но сообщит об ошибке через stderr или код возврата.
print(f"Ошибка: Не удалось выполнить команду 'open'. Убедитесь, что '{app_path}' — это правильный путь к приложению.")
except Exception as e:
print(f"Произошла непредвиденная ошибка: {e}")

if __name__ == "__main__":
connect_agent()

Linux

Для автоматического запуска агента Indigo в Linux вы можете вызвать его бинарный файл напрямую. Вам потребуется добавить выбранную команду в стартовые скрипты вашей системы. Метод для этого зависит от вашего дистрибутива Linux и окружения рабочего стола (например, добавление в .bashrc или .profile для входа в оболочку, .xinitrc для запуска X-сессии, создание пользовательской службы systemd, использование задания cron @reboot или использование утилит автозапуска, специфичных для окружения рабочего стола).

Вы можете запустить агент, вызвав его полный путь (предполагая место установки по умолчанию):

/opt/indigo/agent.bin

В качестве альтернативы, если каталог, содержащий agent.bin, находится в переменной окружения PATH вашей системы, или если indigo является символической ссылкой, размещенной в каталоге внутри вашего PATH, вы можете запустить его, просто используя имя команды:

indigo

Обратитесь к документации вашего дистрибутива, чтобы узнать лучший способ добавления команды в автозагрузку.