DNS поиск с подстановочными знаками?

Что-нибудь вроде nslookup или же dig предложить возможность поиска на основе чего-то, содержащегося в имени... как поиск по шаблону или что-то?

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

Я не могу найти способ эффективно иметь эквивалент nslookup *miller*... было бы здорово потом вернуться

Name: sf-jacobmiller.localdomain.com
Address: 10.10.10.121

Name: sf-justinmiller.localdomain.com
Address: 10.10.10.144

... который я мог бы затем разобрать в раскрывающемся списке для них, чтобы выбрать из.

Я еще не изучил, что доступно с ldapsearch который может быть в состоянии сделать то, что я ищу. Мое единственное требование - это то, что он встроен в OSX, и мне больше не нужно ничего устанавливать, иначе я открыт для любых решений, которые вы можете предложить. Спасибо

4 ответа

Решение

Вы можете получить полный список записей в зоне с передачей зоны; Вы должны разрешить это для авторизованных систем на вашем DNS-сервере.

Как только это будет сделано, вы можете запустить передачу и получить результат:

dig axfr localdomain.com | grep -i miller

Сервер имен по своей природе не позволяет вам искать зону или запрашивать, для каких зон он является авторитетным. Помимо очевидной причины уменьшения векторов атак (вы не можете сделать запрос HTTP/1.1 к хосту, если вы не знаете его имени), есть очень веская причина для этого: зона может содержать символы подстановки, поэтому для каждого хоста в такой зоне это как деление на ноль.

Если вы работаете с сервером имен, в записях которого вы хотите искать, вы можете перенести зону на локальный сервер имен и искать записи напрямую. Вам все равно нужно будет проанализировать текстовые записи в любом формате, в котором они переданы, поскольку локальный сервер имен не будет реагировать по-другому.

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

редактировать

Zonetransfer, конечно, возможен, если он доступен.

Согласившись с проверенным ответом, я подумал, что цикл for может стать альтернативой для того, кто не авторизован для передачи зоны. Если вы знаете диапазон IP:

name="mthebeau"
net="123.45.67."
for ip in $( seq 1 255 ); do {
    sleep 1; # be kind to the server, unauthorized user
    text="$( nslookup $net$ip 2>&1 | grep "$name" )";
    if [ -z "$text" ]; then continue; fi;
    echo "$text";
}; do

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

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