Предыстория: я делаю сценарий, чтобы проверить черный список доменов и посмотреть, какие домены все еще действительны (преобразовать в 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,}$)