라우터의 IP 주소를 표시하는 방법은 무엇입니까?


22

라우터의 IP 주소 만 얻기 위해 어떤 명령을 실행할 수 있습니까?

이 명령을 사용하면 라우터의 IP 만 있어야하며 예를 들어 전체 라우팅 테이블이 아닙니다 (실행 할 때와 같이 route -n).

답변:


22

원 라이너 :

  • 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나를 위해

참고 :

15.04 이상에는을 nm-tool사용할 수 없으므로을 사용하십시오 nmcli dev show <IFACE>. 예를 들어

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

편집 및 추가 정보

명령을 검토하여 알 수 있듯이, 우리는 nm-tool(NetworkNote에서 정보를 가져옵니다) 출력을 가져 gateway오고 word를 포함하는 줄을 찾은 다음 echo를 사용하여 정보보다 인쇄합니다 (공백으로 구분). 그리고 그 전체의 두 번째 항목 만 잘라냅니다 산출. 연결이 두 개 이상인 경우 상단 xargs echo | cut -d' ' -f2부분을 제거 하고 교체 해야 할 수도 있습니다 awk '{print $2}'. 다시 말해 전체 줄은 다음과 같습니다 nm-tool | grep -i gateway | awk '{print $2}'. 또는 nm-tool | grep -oP '(?i)gateway:\s*\K\S+'주석에서 Avinash Raj가 제안한대로 사용할 수 있습니다 . 보시다시피 여기에는 특별한 작업이 없으며 여기에서 전체 시련은 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}'


단순nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
Avinash Raj

@AvinashRaj 감사합니다! 나는 grep과 awk에 대해 깊이 연구하지 않았으므로 이미 가지고있는 지식을 바탕으로 작동합니다. 알아두면 좋을 것입니다
Sergiy Kolodyazhnyy

아마도 이것은 제의 일부 구성 (추가) 특수성에 기인하지만, 어댑터 시스템에서 eth0wlan0모두 적극적 접속 만에 구성된 게이트웨이 wlan0, nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2단순히 출력한다 0.0.0.0. 다음 nm-tool | grep -oP '(?i)gateway:\s*\K\S+'두 줄을 출력 0.0.0.0합니다 192.168.1.1. ( ip route ...route -n ...방법은 생산 192.168.1.1내가 가장 바람직한 결과를 고려할 것이다.)
엘리야 케이건

network-manager예를 들어 ifupdown또는에 의해 네트워크를 관리하지 않는 경우에는 작동하지 않습니다.이 ifconfig경우 nm-tool원하는 출력을 생성하지 않습니다. 간단히 말해서이 답변은 network-manager..에 의해 관리되는 네트워크에만 의존합니다 .
heemayl

@EliahKagan 아, 알겠습니다. 내 명령의 경우 'gateway'가있는 줄을 찾은 다음 공백으로 구분 된 한 줄로 에코하고 두 번째 항목을 잘라냅니다. 거기에 두 줄이 있기 때문에 내 명령은 그중 하나만 인쇄합니다. 이 경우 Avinash의 명령이 더 좋습니다. 0.0.0.0은 관련이 있습니다. heemayl의 의견에 관해서는 그렇습니다. 맞습니다. OP의 질문에는 출력을 보여주는 것 외에는 사양이 없었습니다.
Sergiy Kolodyazhnyy

7

여러 가지 방법으로 찾을 수 있습니다

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

uniq단지 tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'5 인치가되기 위해 o를 사용할 필요는 없습니다 .
Avinash Raj

너무 많은 선택. 내 시스템에서는 유니크없이 두 번 인쇄합니다. 우리의 솔루션도 작동합니다.
Panther

참고 tracepath지원 -m우분투의 일부 버전하지 다른 사람 .
Eliah Kagan

그건 그렇고, @ bodhi.zazen, 귀하의 답변에 변형이 있습니다 .traceroute 사용하십시오. 같은 생각으로 다른 명령이 맞습니까?
Sergiy Kolodyazhnyy

@serg는 확실히 명령과 필터링 옵션, sed, awk, perl, grep의 긴 목록이있을 것입니다.
Panther

6

일반적으로 사용 route -n하면서이 sed솔루션을 route -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

당신은 사용할 필요가 없습니다 tr, grep만으로도 작업을 수행합니다route -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
Avinash Raj

1

나는 이것을 자주 사용합니다 :

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

주소가 192.168.0.1어떻습니까?
Avinash Raj

1

시스템에서 웹 브라우저에 액세스 할 수있는 경우 http://whatsmyrouterip.com/으로 이동 하면 명령없이 IP를 찾을 수 있어야합니다.

그렇지 않으면 단순히 터미널을 열고 ip route | grep default충분하다. 네트워크 인터페이스에 따라 둘 이상을 제공 할 수 있습니다.


0

나는 이것을 자주 사용하고 기억하기 쉽다.

route | grep default | awk '{print $2}'

0
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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.