Discussion:
[shell-script] Problema com o FOR
brunodiasinfo@yahoo.com [shell-script]
2018-08-18 13:49:12 UTC
Permalink
Prezados tudo bem?


Eu estou escrevendo um código que verifique a versão SOA dos DNS's, mas encontrei um grande problema,
quando fazemos uma requisição ao DNS usando o código (dig @a1.a.dns.br soa com.br am.br 9guacu.br +short | cut -d " " -f3) ele irá
retornar a versão SOA das 3 zonas dns (com.br, am.br e 9guacu.br) sendo no formato abaixo:


2018230324
2018230324
2018230324


O meu objetivo é fazer com que a saída seja assim:


com.br = 2018230324
am.br = 2018230324
9guacu.br = 2018230324


Eu tentei fazer com FOR, mas o resultado de saída é assim:


com.br am.br 9guacu.br - 2018230324
com.br am.br 9guacu.br - 2018230324
com.br am.br 9guacu.br - 2018230324


Então eu peguei os espaços entre as zonas e coloquei um \n e ficou assim a saída:


com.br
am.br
9guacu.br - 2018230328
com.br
am.br
9guacu.br - 2018230328
com.br
am.br
9guacu.br - 2018230328




Poderiam me ajudar? desde já Obrigado.




Segue o trecho do código:


elif [ $1 = y ]
then
case "$2" in

a)
shift 2;
echo "dig "omiti esse" soa $* +short | cut -d \" \" -f3"
dig "Omiti esse" soa $* +short | cut -d " " -f3
echo "
"
for i in {1..8}
do
echo "dig @a$i.a.dns.br soa $* +short | cut -d \" \" -f3"
soa=$(dig @a$i.a.dns.br soa $* +short | cut -d " " -f3)
zona=$(sed 's/ /\n/g' <<< $*)
for ver in $soa ; do
echo "$zona - $ver"
done
done


;;


Explicação:


Ele verifica o primeiro argumento, se for Y ele verifica se o segundo argumento é "a", se for ele da um shift e elimina os 2 primeiros argumentos (o Y e o A) deixando como argumento
somente as zonas dns.

Como falado, o objetivo é mostrar a zona mais a versão, separado por "=", a quantidade de zonas vai variar também.
Raul Libório rauhmaru@gmail.com [shell-script]
2018-08-18 15:15:36 UTC
Permalink
dig @a1.a.dns.br soa com.br am.br 9guacu.br | awk '/.br+.+2018/''{ print
$1,"=",$7}'
com.br. = 2018230364
am.br. = 2018230364
9guacu.br. = 2018230364
Post by ***@yahoo.com [shell-script]
Prezados tudo bem?
Eu estou escrevendo um código que verifique a versão SOA dos DNS's, mas
encontrei um grande problema,
soa com.br am.br 9guacu.br +short | cut -d " " -f3) ele irá
retornar a versão SOA das 3 zonas dns (com.br, am.br e 9guacu.br) sendo
2018230324
2018230324
2018230324
com.br = 2018230324
am.br = 2018230324
9guacu.br = 2018230324
com.br am.br 9guacu.br - 2018230324
com.br am.br 9guacu.br - 2018230324
com.br am.br 9guacu.br - 2018230324
com.br
am.br
9guacu.br - 2018230328
com.br
am.br
9guacu.br - 2018230328
com.br
am.br
9guacu.br - 2018230328
Poderiam me ajudar? desde já Obrigado.
elif [ $1 = y ]
then
case "$2" in
a)
shift 2;
echo "dig "omiti esse" soa $* +short | cut -d \" \" -f3"
dig "Omiti esse" soa $* +short | cut -d " " -f3
echo "
"
for i in {1..8}
do
zona=$(sed 's/ /\n/g' <<< $*)
for ver in $soa ; do
echo "$zona - $ver"
done
done
;;
Ele verifica o primeiro argumento, se for Y ele verifica se o segundo
argumento é "a", se for ele da um shift e elimina os 2 primeiros argumentos
(o Y e o A) deixando como argumento
somente as zonas dns.
Como falado, o objetivo é mostrar a zona mais a versão, separado por "=",
a quantidade de zonas vai variar também.
--
Raul Libório
http://rauhmaru.blogspot.com/
openSUSE Member | Linux User #4444581

/etc/httpd/conf.d/ssl.conf:7
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
Loading...