Как анализирате порта на SRV записа от резултат от копаене?

Анализирам изхода на dig по този начин, за да получа порта на SRV запис.

export SERVER_DNS_NAME=myserver
echo "SERVER_DNS_NAME: " $SERVER_DNS_NAME
echo "dig: " $(dig +noall +answer $SERVER_DNS_NAME SRV )
echo "port old: " $(dig +noall +answer $SERVER_DNS_NAME SRV | cut -d ' ' -f 6)
SERVER_DIG_RESULT=$(dig +noall +answer $SERVER_DNS_NAME SRV )
echo "SERVER_DIG_RESULT: " $SERVER_DIG_RESULT
SERVER_STRING_ARRAY=($SERVER_DIG_RESULT)
for i in "${SERVER_STRING_ARRAY[@]}"
do
  :
  echo $i
done
SERVER_PORT=${SERVER_STRING_ARRAY[6]}
echo "server port new: " $SERVER_PORT
if [ -z $SERVER_PORT ]; then
  echo "invalid port"
  exit 1
fi
until nc -z $SERVER_DNS_NAME $SERVER_PORT
... do something

Проблемът ми е, че понякога портът е в елемент 6 от масива, понякога 7.

Въпросът ми е: Как надеждно анализирате порта от резултат от копаене?


person hawkeye    schedule 06.08.2016    source източник
comment
Можете ли да включите примери, когато портът е в елементи на масива 6 и 7?   -  person janos    schedule 06.08.2016


Отговори (3)


Използвайте опцията +short за dig, която ще ви даде най-съкратения изход, който след това се анализира тривиално:

% dig +short _xmpp-client._tcp.jabber.org. SRV
31 30 5222 hermes2v6.jabber.org.
30 30 5222 hermes2.jabber.org.
person Alnitak    schedule 09.08.2016

Може да харесате и този:

host -t SRV mySRVdomain.local                                           
# mySRVdomain.local has SRV record 1 1 2368 e04dc24b-96c6-4b52-8356-42be0d34e7bb.mySRVdomain.local.


# get it as host:port
host -t SRV mySRVdomain.local | sed -r 's/.+ ([^ ]+) ([^ ]+)\.$/\2:\1/g'

# This will print: e04dc24b-96c6-4b52-8356-42be0d34e7bb.mySRVdomain.local:2368
# which is the first real URL with PORT

Може да не е точно същото, от което се нуждаете, но можете да схванете идеята

person Kostanos    schedule 10.08.2019

Използвайте Curl и AWK, за да формирате бърза команда:

curl http://$(dig +short {HOST} srv | awk '{printf "%s:%s\n",$4,$3}')

person Andy Wong    schedule 29.04.2021