У нас есть серверная инфраструктура, насчитывающая сотни серверов. Доступ ко всем этим серверам осуществляется через сервер ключей. У нас есть централизованное управление аутентификацией.
Итак, я попробовал использовать эту команду bash на нашем сервере ключей, чтобы вывести список всех пользователей в группе:
adquery group GROUP_NAME -a
И я использовал этот результат в следующем скрипте Python, чтобы прочитать вывод и передать его в переменную с именем users
:
users = os.popen("adquery group GROUP_NAME -a").read()
У меня проблема в том, что, когда скрипт запускается два-три раза, он работает нормально, и внезапно команда дает пустой результат. И когда я пытаюсь запустить ту же команду в командной строке Linux, это все равно терпит неудачу. Но через какое-то время. Опять же, когда я пытаюсь запустить его, он работает. Пока я даже не понял, как это происходит. Но когда это происходит, любой, кто имеет доступ к этому серверу, не может получить результаты, как я.
Примечание - Обновление. Еще кое-что нужно добавить.
Когда я пытаюсь запросить другие вещи, например adquery user USERNAME -a
Они все еще работают. Это дает результат без проблем. Но команда, о которой я упоминал ранее, по-прежнему не работает без ошибок и вывода.
Может кто-нибудь объяснить мне, почему это происходит?
Это звучит как классическая проблема нехватки портов. Вы запускаете эту команду несколько раз в более старой ОС, у которой было меньше доступных портов 1024-5000.
На машине с Windows запустите netstat -ano. Ищите соединения с одним и тем же IP-адресом с несколькими портами, если многие из них находятся в "TIME_WAIT", это еще один признак.
Кроме того, используйте диспетчер задач, чтобы проверить высокий уровень использования памяти, который обычно сопровождается исчерпанием портов.