라우터의 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

아마도 이것은 제의 일부 구성 (추가) 특수성에 기인하지만, 어댑터 시스템에서 eth0와 wlan0모두 적극적 접속 만에 구성된 게이트웨이 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.