#python #architecture #distributed #environment
#python #архитектура #распределенный #Окружающая среда
Вопрос:
Вот мой сценарий: я разработал настольное приложение Python, которое я использую для проверки состояния служб / баз данных на том же компьютере, на котором оно запущено.
Мне нужно отслеживать, используя мое приложение, два «братских» узла Window Server 2003 (версия Python 2.5 для обоих). Один из хостов находится в моей собственной локальной сети, другой — в другой локальной сети, к которой можно подключиться через VPN.
Приложение состоит из:
- Графический пользовательский интерфейс (
gui.py
), который предоставляет виджеты для сбора пользовательских вводимых данных и запускает… - …сценарий бизнес-логики (
console.py
), который, в свою очередь, вызывает подчиненные скрипты Python, которые проверяют системные службы и использование базы данных / статус учетных записей / ecc. Текстовый вывод этих проверок затем возвращается обратно в графический интерфейс пользователя.
Раньше я запускал приложение непосредственно на каждой из двух машин, но было бы здорово превратить его в клиент-серверное приложение, чтобы:
- пользователи должны будут просто запускать
gui.py
локально gui.py
предполагается, что он будет передавать параметры некоторым серверным модификациямconsole.py
, которые будут запущены на обоих хостах Windows- затем серверы выполнят системные проверки и сообщат о результатах клиентскому графическому интерфейсу, который их отобразит.
Я подумал о двух возможных решениях:
- Создайте службу Windows на каждом из хостов Windows, в основном выполняющую
console.py
код и ожидающую входящих запросов от клиентов - Откройте SSH-соединения с любого хоста локальной сети на соответствующий хост Windows и запустите
console.py
на нем напрямую.
Я работаю над корпоративной средой, которая имеет некоторые ограничения сети и хоста: многие сетевые протоколы (например, SSH) фильтруются нашим корпоративным брандмауэром. Кроме того, у меня нет прав администратора на хостах Windows, поэтому я не могу установить на них системные службы…это расстраивает!
Я просто хотел спросить, есть ли какой-либо другой способ создания gui.py
и console.py
обмена данными по сети, который я не принял во внимание. У кого-нибудь есть какие-либо предложения? Пожалуйста, обратите внимание, что — если возможно — я не собираюсь просить отдел ИКТ предоставить мне права администрирования на хостах Windows!
Заранее спасибо!
Ответ №1:
Ответ самому себе: я нашел одно возможное решение..
Мне повезло, потому что console.py
скрипт фактически вызывает множество подчиненных скриптов Python, каждый из которых выполняет одну проверку системы с помощью стандартных сторонних инструментов командной строки, которые могут быть запущены для проверки функций на удаленных хостах.
Затем я изменил gui.py
и console.py
, чтобы пользователи могли параметрически указывать, на каком хосте Windows должны выполняться проверки. Таким образом, я могу получить приложение с отдельными атрибутами … но мне повезло, что, если один или несколько сторонних CL-инструментов не поддерживают проверку функций удаленного хоста?