私は必要なことをする投稿を見つけましたが、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では変更されずに動作しません。tracertの代わりにtracerouteが動作しますが、出力は予測できないため、解析方法はわかりません。
私は
IP="$(traceroute -d www.yahoo.com | grep " 2 " | sed -e "s/.*((.*)).*/1/")"
しかし、grepは(不完全に)ハードコーディングされています。例のようにpingを機能させる方法がわかりませんでした。
どんな入力も感謝します。
回答:
回答№1は4個人的に、私はこのコマンドを実行しました:
wget -qO- whatismyip.org
回答№2の場合は0
これは信頼できる解決策ではなく、受動的な方法ですこれを行うには、独自のルーターの「WAN」ステータスページをプルするスクリプトを作成します。何度でも実行でき、過度のプロービングについて文句を言う人はいません。
回答№3の場合は0
OK
必要な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
楽しむ!
回答№4の場合は0
@pizzaの発言を組み合わせました この 答えて、次の作業スクリプトを作成しました。 「tracerouteのようなものを使用するほど良くはありませんが、」それほど複雑ではありません。
#!/bin/bash
content="$(wget http://checkip.dyndns.org/ -q -O -)"
myip="$(<<< "$content" sed -e "s/.*Current IP Address: //" -e "s/<.*//")"
echo "myip = [${myip}]"
ザ wget
コマンドは、dyndnsにIPを要求した結果を取得します。次に、 sed
IPアドレスdyndnsが返される前後にすべてを切り取ります。
他の場所で述べたように、dyndnsなどのWebサイトはそのようなリクエストが頻繁に行われる場合はブロックします。ただし、ほとんどの場合、IPはセッションの少なくとも継続期間中は一定のままであるため、数日間ではない場合、このスクリプトを頻繁に実行する必要はありません。
回答№5の場合は0
必要なのがシンプルで、他のサーバー(またはサービス)に依存することを気にしない場合:
dig +short myip.opendns.com @resolver1.opendns.com
それはあなたの住所だけを吐き出します
または、
#!/bin/bash
myip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
echo "myip = [${myip}]"