Как сохранить в var, только один из вывода - PullRequest
0 голосов
/ 10 июля 2020

Я пишу сценарий, который выполняет команду dig на 2 доменах, а после следующего cmd выводится host. И всегда я получаю для exmaple:

findUserServer=for r in $(dig +short $login.example.COM && dig +short $login.example.ORG); do host $r|awk '{print $NF}';done | awk -F "." '{print $1}';

1 output: >> asdf02 example

asdf02 - это имя сервера, его всегда одно и то же имя начинается с «asdf».

Вопрос: Есть ли у вас идеи, как сохранить в только переменная asdf02?

question +: asdf02 woudl не всегда будет первым, может быть примером asdf02 Должен ли я сделать, может быть, sed, который смотрит на 4 первых символа? Если это "asdf", то: [...]

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Выполните это через shellcheck. net ... Попробуйте это.

findUserServer="$( for end in COM ORG; do
                    host $( dig +short $login.example.$end );
                   done | sed -n '/ asdf/{ s/^.* //; s/[.].*//; p; }' )"

Это запустит 2 dig s и направит общий вывод через sed, который будет игнорировать строки, в которых нет asdf, и очищать совпадения для вас.

Сообщите мне, если я пропустил детали, потому что у меня нет этих точных значений.

1 голос
/ 10 июля 2020

Старайтесь не передавать команды awk друг другу, поэтому:

for r in $(dig +short $login.example.COM && dig +short $login.example.ORG); do host $r;done | awk -F [.\ ] '/asdf02/ { print $10 }'

Мы используем как пробел, так и. в качестве разделителей, а затем совпадение с шаблоном вывода для появления asdf02. Если найдем, то печатаем адрес.

...