내 라우터의 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}'
참고: 귀하의 컴퓨터가 네트워크에 있는 유일한 컴퓨터인 경우에만 작동합니다.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
, 에코(공백으로 구분)를 사용하여 정보를 인쇄한 다음 해당 전체의 두 번째 항목만 잘라냅니다. 산출. 두 개 이상의 연결이 있는 경우 상단 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}'
답변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
사용해 볼 수 있습니다 .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
답변4
시스템에서 웹 브라우저에 액세스할 수 있는 경우 다음으로 이동할 수 있습니다.http://whatsmyrouterip.com/그리고 어떤 명령 없이도 귀하의 IP를 찾을 수 있어야 합니다.
그렇지 않으면 단순히 터미널을 열고 다음을 수행하는 것만으로도 ip route | grep default
충분합니다. 네트워크 인터페이스에 따라 둘 이상을 제공할 수도 있습니다.