brunodiasinfo@yahoo.com [shell-script]
2018-08-18 13:49:12 UTC
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.
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.