Win32_Сервисы. Получение сервиса через Python с удаленной машины

Я создаю веб-приложение для мониторинга определенных серверов, и часть его — мониторинг определенных служб, которые должны работать на этих серверах. Я написал простой скрипт Python, который тестирует функцию Win32_service, которая должна получать все запущенные службы. Вот код:

      import wmi

def get_running_services(computer, user, password):
    try:
        # Connect to the remote WMI service
        connection = wmi.WMI(computer=computer, user=user, password=password)
        print(f"Successfully connected to {computer}")

        # Get details about running services
        running_services = []
        for service in connection.Win32_Service(State="Running"):
            running_services.append({
                "name": service.Name,
                "display_name": service.DisplayName,
                "status": service.Status,
            })

        # Print details about each running service
        for service in running_services:
            print(f"Service Name: {service['name']}")
            print(f"Display Name: {service['display_name']}")
            print(f"State: {service['state']}")
            print(f"Status: {service['status']}")
            print("-" * 50)

        return running_services
    except wmi.x_wmi as e:
        print(f"Failed to connect to {computer}: {str(e)}")
        return None
    except Exception as e:
        print(f"An unexpected error occurred: {str(e)}")
        return None

get_running_services(IP, User, Password)

И вот мой вывод: успешное подключение к 192.168.xxx.xxx. Не удалось подключиться к 192.168.xxx.xxx: <x_wmi: неожиданная ошибка COM (-2147217405, «ошибка OLE 0x80041003», нет, нет)>

Учетные данные специально изменены в целях безопасности, но они верны.

Как видите, первое подключение прошло успешно, и это потому, что я внес все необходимые изменения, чтобы предоставить моему компьютеру разрешение на подключение к удаленному серверу. Я часами искал решение, но, похоже, не нашел его. Кто-нибудь знает, какое разрешение мне нужно настроить, чтобы иметь возможность получать услуги?

Я попытался предоставить разрешения моему локальному пользователю из удаленной службы с помощью dcomcnfg и wmimgmt.msc и разрешить входящие правила в дополнительных настройках брандмауэра, а также создать новое правило WMI для трафика, которое должно разрешать соединения с неуказанных хостов. (Я знаю, что это небезопасно, я сначала тестирую программу на фиктивном сервере)

1 ответ

исправил это, запустив sc sdset SCMANAGER D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD) в удаленной консоли

Другие вопросы по тегам