Передача имени сервера из списка в nslookup с помощью Awk - PullRequest
1 голос
/ 03 октября 2019

Предыстория: я делаю сценарий, чтобы проверить черный список доменов и посмотреть, какие домены все еще действительны (преобразовать в IP), чтобы я мог вырезать старые неразрешимые домены из списка. В списке миллионы строк, поэтому я использую awk (вместо «делать во время чтения») для увеличения скорости.

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

Я почти закончил, за исключением того, что застрял в одной части - как я могу указать сервер, который использует nslookup?

У меня есть -port =54 работает, но я также пытаюсь настроить, какой DNS-сервер использует nslookup.

awk '{print $1}' /etc/pihole/gravity.list | nslookup -port=54| awk '/[Nn]ame/ {print $NF}'  >> /etc/pihole/gravityProcessed.list

Если я пытаюсь указать -server =, это недопустимый параметр. Если я пытаюсь изменить nslookup для использования 1.1. 1.1, вместо использования 1.1.1.1 в качестве сервера, он пытается вместо этого использовать nslookup 1.1.1.1.

awk '{print $1}' /etc/pihole/gravity.list | nslookup 1.1.1.1 | awk '/[Nn]ame/ {print $NF}'  >> /etc/pihole/gravityProcessed.list

Проблема заключается в том, что nslookup не имеет параметра -server afaik (да, он имеет параметр -port) Так что мне нужно сделать awk:

nslookup [INSERT HOST] server -port=

Вот пример /etc/pihole/gravity.list

google.com
yahoo.com
skype.com
microsoft.com

Другой вариант, который я хотел бы включить, - эторегулярное выражение правильного синтаксиса домена, как сценарий в настоящее время диЕсли он попадает в домен, который не отформатирован должным образом. Например, через grep (?=^.{4,253}$)(^(?:[a-zA-Z0-9](?:(?:[a-zA-Z0-9\-]){0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$)

1 Ответ

2 голосов
/ 04 октября 2019

Если вы хотите использовать альтернативный сервер имен, посмотрите следующую инструкцию для nslookup:

АРГУМЕНТЫ
Интерактивный режим включается в следующих случаях:
1. когдааргументы не приводятся (будет использоваться сервер имен по умолчанию)
2. когда первый аргумент является дефисом (-), а второй аргумент является именем хоста или интернет-адресом сервера имен.

Так что попробуйте

nslookup - 1.1.1.1 < /etc/pihole/gravity.list 2>/dev/null | 
   awk '/[Nn]ame/ {print $NF}' >> /etc/pihole/gravityProcessed.list
...