Есть ли какая-нибудь функция командной строки в производной FreeNAS (FreeBSD), которая может возвращать мой внешний адрес? Поскольку тот же адрес синхронизируется с DynDns (через маршрутизатор), в C # я получил его через DNS-запрос следующим образом:
var hostEntry = Dns.GetHostEntry("myexternalname.dyndns.org");
foreach (var iAddress in hostEntry.AddressList) {
if (iAddress.AddressFamily == AddressFamily.InterNetwork) {
MessageBox.Show(iAddress);
}
}
Я нашел команду, которая работает на FreeNAS.
# host myexternalname.dyndns.org
Он возвращается
myexternalname.dyndns.org A 89.172.197.320
Из этого я просто использую awk:
host myexternalname.dyndns.org | awk '{ print $3; }'
и это возвращает только IP:
89.172.197.320
P.S. Я знаю, что 89.172.197.320 не настоящий IP-адрес. Я написал это так, чтобы не передавать свой IP-адрес (или IP-адрес от кого-то еще).
P.P.S. Спасибо за помощь Кронику и Эйвери Пэйну, поскольку их идеи подтолкнули меня в правильном направлении.
вот моя любимая команда:
wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
просто. Чисто. и если у вас завиток:
curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
Предпосылки
Из командной строки:
dig yourserver.dyndns.org | grep "IN" | grep "[0-9]" | awk '{print $5}' | sort | uniq
Хорошо:
Плохо:
Уродливый: