web-dev-qa-db-ja.com

ルーターのIPアドレスを(ちょうど)表示する方法は?

ルーターのIPアドレスを取得するために、どのコマンドを実行できますか?

このコマンドを使用すると、たとえば、ルーティングテーブル全体ではなく、ルーターのIPのみが必要になります(route -nを実行するときのように)。

21
kaio

ワンライナー:

  • nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
  • nm-tool | grep -i gateway | awk '{print $2}
  • netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
  • arp -n | awk '{print $1}'注:マシンがネットワーク上にある場合にのみ機能します
  • ip route show | grep -i 'default via'| awk '{print $3 }'

出力:192.168.0.1 for me

NOTE

15.04以降ではnm-toolがないため、nmcli dev show <IFACE>を使用します。例えば、

$ nmcli dev show wlan7 | grep GATEWAY                                                                                    
IP4.GATEWAY:                            192.168.0.1
IP6.GATEWAY:                            

編集および追加情報

コマンドを調べるとわかるように、nm-toolの出力を取得し(これは、NetworkManagerから情報を取得します)、Wordを含む行を検索しますgateway、エコー(空白で区切られた情報)そして、その出力全体の2番目の項目のみを切り取ります。 2つ以上の接続がある場合は、_remove xargs echo | cut -d' ' -f2部分を削除し、awk '{print $2}'に置き換える必要があることに注意してください。つまり、行全体はこのnm-tool | grep -i gateway | awk '{print $2}'のようになります。あるいは、Avinash Rajがコメントで提案したnm-tool | grep -oP '(?i)gateway:\s*\K\S+'を使用することもできます。ご覧のとおり、ここでは特別なことは何もしていません。ここでの試練はすべて、cut、awk、grepなどの出力編集ツールを使用するための演習にすぎません。

ゲートウェイ情報を取得する別の方法は、nmcli dev list(はい、まだネットワークマネージャーに依存しています)コマンドを使用することです。 nmcliはコマンド-ネットワークマネージャーのラインバージョンです。 nmcli dev list | grep -i routersを実行するか、nmcli dev list | grep -i 'gw ='を実行できます。繰り返しになりますが、必要に応じて、目的のIPアドレスを除く他のすべての情報を切り取ることができます。

元の質問では、デフォルトゲートウェイのみを印刷することが仕様であったため、ここではnm-toolの出力に依存しています。 NetworkManagerにはデフォルトでUbuntuが付属しています。これはUbuntuのネットワーク接続を管理する標準的な方法です。 wicdやwpa_cliを介して接続するなど、他の何かを使用する場合、nm-toolは答えを提供しません。そのような場合、他の人の答えが以下のように役立つことがあります。

より中立的で構成中立的なオプションは、netstat -nに似たカーネルルーティングテーブルを使用するroute -nを使用することです。出力は以下のとおりで、驚くことはありません。

  Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

そして、これがあなたの希望する情報を切り取る方法です:netstat -nr | awk '$1 == "0.0.0.0"{print$2}'

もう1つ、中立的:arp -n | awk '{print $1}'

22

あなたはそれを多くの方法で見つけることができます

ip route show default

より良い質問、出力をどのように、またはどのように整形したいですか?

ip route show | awk '/default/ {print $3}'

tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2}' | uniq

コメントから-(Avinash Raj 0に感謝

tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
7
Panther

通常route -nを使用するので、route -nと組み合わせたこのsedソリューションを試すことができます。

route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p' 

テストは次のとおりです。

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.0.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0

$ route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p' 
192.168.1.1

別の方法は、grepを使用することです。

$ route -n | tr -s ' ' | grep -Po "(?<=0\.0\.0\.0 )[^ ]+(?= 0\.0\.0\.0)"
192.168.1.1

@AvinashRajが指摘したように、これはgrepのみを使用して実行できます(trを使用してスペースを絞る必要はありません)。

route -n | grep -Po "0\.0\.0\.0\s*\K\S+(?=\s*0\.0\.0\.0)"
192.168.1.1
6
heemayl

システム上のWebブラウザーにアクセスできる場合は、 http://whatsmyrouterip.com/ にアクセスでき、コマンドなしでIPを見つけることができるはずです。

そうでなければ、単に端末を開いてip route | grep defaultを実行するだけで十分です。ネットワークインターフェイスに応じて複数の情報が得られる場合があります。

1
MaZZly

私はこれを頻繁に使用します:

route -n | awk '{ print $2 }' | grep -Eo '[1-9]{0,3}\.[1-9]{0,3}\.[0-9]{0,3}\.[1-9]{0,3}'
1
krt

私はこれを非常に頻繁に使用し、覚えやすいです:

route | grep default | awk '{print $2}'
0
sys0dm1n
hostname  -I

190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1

iPの問題のみを取得するには

hostname -I | cut -d' ' -f1 

190.200.200.107

0
Scott Stensland