0

必要なことを行う投稿を見つけましたが、Windows では:

プログラムによるパブリック IP の検出

> tracert -d www.yahoo.com

`Tracing route to www-real.wa1.b.yahoo.com [69.147.76.15]
over a maximum of 30 hops:`

1    <1 ms    <1 ms    <1 ms  192.168.14.203
2     *        *        *     Request timed out.
3     8 ms     8 ms     9 ms  68.85.228.121
4     8 ms     8 ms     9 ms  68.86.165.234
5    10 ms     9 ms     9 ms  68.86.165.237
6    11 ms    10 ms    10 ms  68.86.165.242

The 68.85.228.121 is a Comcast (my provider) router. We can ping that:

ping -r 9 68.85.228.121 -n 1

Pinging 68.85.228.121 with 32 bytes of data:

Reply from 68.85.228.121: bytes=32 time=10ms TTL=253 Route: 66.176.38.51 ->

68.85.228.121 ->

68.85.228.121 ->

192.168.14.203

Voila! The 66.176.38.51 is my public IP.

この (3 番目の) 回答は、ISP の IP を取得し、ping を使用して IP を取得する方法を示しています。

Linux では変更しないと動作しません。traceroute は tracert の代わりに機能しますが、その出力は予測できないため、解析方法がわかりません。

私はどこまでも

IP="$(traceroute -d www.yahoo.com | grep ' 2 ' | sed -e 's/.*(\(.*\)).*/\1/')"

しかし、grepは(不十分に)ハードコードされています。例のようにpingを機能させる方法がわかりませんでした。

任意の入力をいただければ幸いです。

4

5 に答える 5

4

個人的には、次のコマンドを実行します。

wget -qO- whatismyip.org

于 2012-05-06T05:20:30.820 に答える
0

わかりました、これが古いスレッドであることは知っていますが、この投稿は私にいくつかのことを明らかにし、それを私がすでに学んだことと組み合わせて、確かな解決策を思いついたと思います.

必要なgrepは次のとおりです。

grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

私の外部IPを見つけるための私の個人的な解決策は、以前は次のとおりでした。

curl icanhazip.com

今は次のとおりです。

ISP=`traceroute -M 2 -m 2 8.8.8.8 | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'` | ping -R -c 1 -t 1 -s 1 $ISP | grep RR | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' > .extIP

その後

cat .extIP

楽しむ!

于 2016-02-08T19:01:04.020 に答える
0

シンプルさが必要で、他のサーバー (またはサービス) に依存することを気にしない場合は、次のことを試してください。

dig +short myip.opendns.com @resolver1.opendns.com

それはあなたのアドレスだけを吐き出します

また、

#!/bin/bash
myip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
echo "myip = [${myip}]"
于 2016-02-09T15:51:46.960 に答える