Если вы ищете общедоступный IP-адрес ящика , вы можете использовать следующее:
dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"
Вы можете использовать опции dig(1)
, такие как -4
или -6
, чтобы специально искать IPv4 или IPv6-адрес; Google предоставит ответ в виде записи типа TXT
, которая будет заключена в кавычки при представлении dig
;если вы хотите впоследствии использовать переменную с такими утилитами, как traceroute
, вы должны использовать что-то вроде tr (1 ), чтобы удалить указанные кавычки.
Другие варианты включают whoami.akamai.net
и myip.opendns.com
, которые отвечают с A
и AAAA
записывают (вместо TXT
, как в приведенном выше примере от Google ), поэтому они не требуют удаления кавычек:
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t any myip.opendns.com +short
dig -6 @resolver1.opendns.com -t any myip.opendns.com +short
Вот пример скрипта, в котором используются все указанные выше параметры для установки переменных:
#!/bin/sh
IPANY="$(dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv4="$(dig -4 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv6="$(dig -6 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
AKAMv4="$(dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)"
CSCOv4="$(dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
CSCOv6="$(dig -6 @resolver1.opendns.com -t aaaa myip.opendns.com +short)"
printf '$GOOG:\t%s\t%s\t%s\n' "${IPANY}" "${GOOGv4}" "${GOOGv6}"
printf '$AKAM:\t%s\n$CSCO:\t%s\t%s\n' "${AKAMv4}" "${CSCOv4}" "${CSCOv6}"
Если вы ищете частный IP-адрес или набор всех IP-адресов, назначенных ящику, вы можете использовать некоторую комбинациюifconfig
(в BSD и GNU/Linux ),ip addr
(в GNU/Linux ),hostname
(опции -i
и -I
в GNU/Linux )и netstat
, чтобы узнать, что происходит.