ルーターの IP アドレスだけを表示するにはどうすればよいですか?

ルーターの IP アドレスだけを表示するにはどうすればよいですか?

ルーターの IP アドレスだけを取得するには、どのようなコマンドを実行すればよいですか?

このコマンドを使用すると、ルーターの IP のみが表示され、たとえば、ルーティング テーブル全体は表示されません ( を実行した場合などroute -n)。

答え1

ワンライナー:

  • 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}'注: ネットワーク上に自分のマシンが 1 台しかない場合にのみ機能します
  • ip route show | grep -i 'default via'| awk '{print $3 }'

出力:192.168.0.1私にとって

注記:

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 から情報を取得することに注意してください)、単語 を含む行を検索しgateway、その情報を echo で出力し (スペースで区切る)、出力全体の 2 番目の項目だけを切り取っています。2 つ以上の接続がある場合は、 の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}'

もう一つ、これも中立的です:arp -n | awk '{print $1}'

答え2

いろいろな方法で見つけられます

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}'

答え3

通常どおり、このソリューションを と組み合わせてroute -n試すことができます:sedroute -n

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

答え4

システム上でウェブブラウザにアクセスできる場合は、翻訳元:そして、コマンドなしで IP を見つけることができるはずです。

それ以外の場合は、ターミナルを開いて を実行するだけでip route | grep default十分です。ただし、ネットワーク インターフェイスによっては、複数の結果が返される可能性があります。

関連情報