Как я могу получить результат и проверить команду dig?

когда мы вводим команду «dig + short www.example.com», мы получаем что-то вроде этого:

www.example.com. 192.168.1.1 192.168.1.2 192.168.1.3 

Я хочу получить первый адрес и проверить его, если это то, что я хочу (192.168.1.1)

Как я могу получить вывод этой команды, особенно вторую строку, используя сценарий оболочки?

Что-то вроде этого будет делать:

 $ dig +short www.google.com | head -1 74.125.225.113 

Но будьте осторожны, потому что большинство серверов, которые имеют несколько IP-адресов, будут делать какую-то форму циклического уровня на уровне DNS, поэтому список обычно вращается каждый раз, когда вы запускаете команду dig :

 $ dig +short www.google.com 74.125.225.116 74.125.225.112 74.125.225.113 74.125.225.114 74.125.225.115 $ dig +short www.google.com 74.125.225.115 74.125.225.116 74.125.225.112 74.125.225.113 74.125.225.114 $ dig +short www.google.com 74.125.225.114 74.125.225.115 74.125.225.116 74.125.225.112 74.125.225.113 

Обратите внимание, как IP-адреса перемещаются из запроса в запрос? Это делается для балансировки нагрузки между этими серверами.

Захват IP в переменную

Следующая команда захватит вывод IP-адреса и поместит его в переменную оболочки.

 $ IP=$(dig +short www.google.com | head -1) 

Вы можете подтвердить это так:

 $ echo $IP 74.125.225.114 

Ну вот

 dig +short www.example.com | sed -n '2{p;q}' 

-n запрещает sed печатать свои данные по умолчанию. 2 заставляет его выполнить p;q на строке номер 2. p означает печать и q для выхода