必要なことを行う投稿を見つけましたが、Windows では:
> 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を機能させる方法がわかりませんでした。
任意の入力をいただければ幸いです。