Мне нужны записи в Ansible hostfile, которые должны быть отформатированы таким образом, чтобы их можно было использовать в обычном файле хоста в Linux. Я могу добиться этого, дважды вызвав в моем скрипте nslookup.
Цель - вызвать nslookup только один раз, но я не знаю, как преобразовать вывод nslookup в операторе if в переменную.
Я пробовал это
if [[ $(nslookup $i > $DNSHOST) && $? == 0 ]]
if [[ $(nslookup $i > $DNSHOST && $? == 0) ]]
if (($(nslookup $i > $DNSHOST) && $? == 0))
if [[ $("nslookup $i > $DNSHOST") && $? == 0 ]]
... и много других комбинаций, но ничего не работает ??
Этот скрипт работает и выполняет свою работу:
for i in $HOSTS; do
if [[ $(nslookup $i) && $? == 0 ]]; then
nslookup $i | sed -e '1,3d;6d' | cut -d$'\t' -f2 | cut -d ' ' -f2 | xargs -n2 | awk '{print $2,"\t",$1}'
fi
done
Это тот, кого я не могу заставить работать:
for i in $HOSTS; do
if [[ $(nslookup $i > $DNSHOST) && $? == 0 ]]; then
cat $DNSHOST | sed -e '1,3d;6d' | cut -d$'\t' -f2 | cut -d ' ' -f2 | xargs -n2 | awk '{print $2,"\t\t",$1}'
fi
done
Когда я использую двойные кавычки, я получаю сообщение об ошибке «каталог не существует».
Иначе он просто зацикливается на списке хостов без nslookup.