您如何从挖掘结果中解析 SRV 记录的端口?
How do you parse the SRV record's port from a dig result?
我正在像这样解析 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。
我的问题是:你如何从挖掘结果可靠地解析端口?
将 +short
选项用于 dig
,这将为您提供最简短的输出,然后对其进行简单解析:
% dig +short _xmpp-client._tcp.jabber.org. SRV
31 30 5222 hermes2v6.jabber.org.
30 30 5222 hermes2.jabber.org.
你可能也喜欢这个:
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/.+ ([^ ]+) ([^ ]+)\.$/:/g'
# This will print: e04dc24b-96c6-4b52-8356-42be0d34e7bb.mySRVdomain.local:2368
# which is the first real URL with PORT
可能和你需要的不完全一样,但你可以理解
使用 Curl 和 AWK 组成快速命令:
curl http://$(dig +short {HOST} srv | awk '{printf "%s:%s\n",,}')
我正在像这样解析 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。
我的问题是:你如何从挖掘结果可靠地解析端口?
将 +short
选项用于 dig
,这将为您提供最简短的输出,然后对其进行简单解析:
% dig +short _xmpp-client._tcp.jabber.org. SRV
31 30 5222 hermes2v6.jabber.org.
30 30 5222 hermes2.jabber.org.
你可能也喜欢这个:
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/.+ ([^ ]+) ([^ ]+)\.$/:/g'
# This will print: e04dc24b-96c6-4b52-8356-42be0d34e7bb.mySRVdomain.local:2368
# which is the first real URL with PORT
可能和你需要的不完全一样,但你可以理解
使用 Curl 和 AWK 组成快速命令:
curl http://$(dig +short {HOST} srv | awk '{printf "%s:%s\n",,}')