답변:
원 라이너 :
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}'
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
..에 의해 관리되는 네트워크에만 의존합니다 .
여러 가지 방법으로 찾을 수 있습니다
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를 사용할 필요는 없습니다 .
일반적으로 사용 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)"
나는 이것을 자주 사용합니다 :
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
어떻습니까?
시스템에서 웹 브라우저에 액세스 할 수있는 경우 http://whatsmyrouterip.com/으로 이동 하면 명령없이 IP를 찾을 수 있어야합니다.
그렇지 않으면 단순히 터미널을 열고 ip route | grep default
충분하다. 네트워크 인터페이스에 따라 둘 이상을 제공 할 수 있습니다.
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
nm-tool | grep -oP '(?i)gateway:\s*\K\S+'