nslookup и awk получают второй адрес - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь получить адрес из приведенного ниже результата моего nslookup

Здесь я хочу получить второй адрес, который 10.0.45.45

Server:         10.152.183.10
Address:        10.152.183.10#53

Name:   pg-master-0.pg-master-headless.postgres.svc.cluster.local
Address: 10.1.45.45

Здесь это мой код

MASTER_HOST=$(nslookup pg-master-0.pg-master-headlesss | awk '/^Address:/ {A=$2}; END {print A}');

echo $MASTER_HOST

К сожалению, мой результат:

10.152.183.10#53

Здесь я вошел в модуль введите описание изображения здесь затем запустил nslookup таким же образом.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Похоже, что nslookup не может разрешить pg-master-0.pg-master-headlesss. Возможно, вы выполняете операцию из другого модуля или со своего личного сервера / компьютера, который не имеет представления о службах, работающих в кластере. (Ваш ноутбук не использует CoreDNS в вашем кластере K8s)

Вы можете попробовать запустить скрипт из модуля в вашем кластере и с полным FQDN, чтобы быть в безопасности:

$ kubectl run -i --tty --rm debug --image=ubuntu --restart=Never -- bash
#
# apt update; apt -y install dnsutils # Installs dnslookup ...
# export MASTER_HOST=$(nslookup pg-master-0.pg-master-headless.postgres.svc.cluster.local | awk '/^Address:/ {A=$2}; END {print A}'); echo $MASTER_HOST"
1 голос
/ 04 августа 2020

Если вам нужен второй «Адрес:» из вывода nslookup, вы можете просто сделать:

awk '/^Address/{n++; if (n==2){print $2; exit}}'

Что проверяет, начинается ли строка с Address, а затем увеличивает счетчик n++ и когда n == 2 выводит второе поле и закрывается.

Пример использования / вывода

С вашими данными в файле с именем nslookup.txt , вы получите следующее:

$ awk '/^Address/{n++; if (n==2){print $2; exit}}' nslookup.txt
10.1.45.45

Конечно, используя nslookup, вы просто перенаправите вывод на awk. Например, если бы мне нужен IP-адрес машины valkyr ie на моем локальном su bnet, я бы использовал:

$ nslookup valkyrie | awk '/^Address/{n++; if (n==2){print $2; exit}}'
192.168.6.135

Посмотрите все и дайте мне знать, если у вас есть дополнительные вопросы.

...