Qual comando posso executar para obter apenas o endereço IP do meu roteador?
Com este comando, eu deveria ter apenas o IP do meu roteador e não, por exemplo, toda a tabela de roteamento (como quando executo route -n
).
fonte
Qual comando posso executar para obter apenas o endereço IP do meu roteador?
Com este comando, eu deveria ter apenas o IP do meu roteador e não, por exemplo, toda a tabela de roteamento (como quando executo route -n
).
One-liners:
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}'
Nota: funciona apenas se sua máquina for a única na redeip route show | grep -i 'default via'| awk '{print $3 }'
saída: 192.168.0.1
para mim
NOTA :
Para 15.04 e posterior, não há nm-tool
, então use nmcli dev show <IFACE>
. Por exemplo,
$ nmcli dev show wlan7 | grep GATEWAY
IP4.GATEWAY: 192.168.0.1
IP6.GATEWAY:
Edições e informações adicionais
Como você pode ver ao examinar o comando, obtemos a saída de nm-tool
(que, nota, obtém informações do NetworkManager), localizamos uma linha contendo a palavra gateway
, imprimimos as informações com eco (separadas por espaços) e cortamos apenas o segundo item desse todo saída. Observe que, se você tiver duas ou mais conexões, poderá ser necessário remover a xargs echo | cut -d' ' -f2
parte superior e substituí-la por awk '{print $2}'
; em outras palavras, a linha inteira ficaria assim nm-tool | grep -i gateway | awk '{print $2}'
. Alternativamente, você poderia ter usado nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
como proposto por Avinash Raj nos comentários. Como você pode ver, não há nada de especial aqui, e todo o calvário aqui é apenas um exercício no uso de ferramentas de edição de saída, como cut, awk e grep.
Outro método para obter as informações do gateway é através do nmcli dev list
comando (sim, ainda confiando no gerenciador de rede). nmcli
é a versão da linha de comando do gerenciador de rede. Você pode correr nmcli dev list | grep -i routers
ou você pode correr nmcli dev list | grep -i 'gw ='
. Novamente, você pode se exercitar cortando todas as outras informações, exceto o endereço IP desejado, se desejar.
Como na pergunta original a única especificação era imprimir apenas o gateway padrão, estou confiando na saída da ferramenta nm aqui. O NetworkManager vem com o Ubuntu por padrão; esta é a maneira padrão de gerenciar as conexões de rede do Ubuntu. Se você usar algo diferente, como wicd ou conectar através do wpa_cli, o nm-tool não fornecerá uma resposta. Nesse caso, você pode achar as respostas de outras pessoas abaixo mais úteis.
Uma opção mais neutra em relação à distribuição e neutra em configuração seria usar netstat -n
, que usa a tabela de roteamento do kernel, semelhante a route -n
. Sua saída é abaixo, nada de surpreendente.
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
E aqui está a maneira de cortar as informações desejadas: netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
Outro, neutro também: arp -n | awk '{print $1}'
nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
eth0
ewlan0
, ambos conectados ativamente, mas com um gateway configurado apenas parawlan0
,nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
apenas as saídas0.0.0.0
.nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
produz duas linhas:0.0.0.0
seguida por192.168.1.1
. (Aip route ...
eroute -n ...
maneiras produzir apenas192.168.1.1
, que eu considero o resultado mais desejável.)network-manager
exemplo,ifupdown
ouifconfig
..nesses casosnm-tool
, não gerará a saída desejada .. em poucas palavras, essa resposta depende apenas da rede que está sendo gerenciada pornetwork-manager
..Você pode encontrar de várias maneiras
Uma pergunta melhor, o que ou como você deseja moldar a saída?
Dos comentários - (obrigado Avinash Raj 0
fonte
uniq
apenastracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
seria 5in.tracepath
suporta-m
em algumas versões do Ubuntu, mas não em outras .Como você costuma usar
route -n
, você pode tentar estased
solução juntamente comroute -n
:Aqui está um teste:
Outra maneira seria usar
grep
:Como o @AvinashRaj apontou, isso pode ser feito apenas usando
grep
(não há necessidade de espremer os espaços usandotr
):fonte
tr
, grep só vai fazer o trabalhoroute -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
Eu uso esse com bastante frequência:
fonte
192.168.0.1
?Se você tiver acesso a um navegador da web no sistema, acesse http://whatsmyrouterip.com/ e ele poderá encontrar seu ip sem nenhum comando.
Caso contrário, basta abrir o terminal e fazer um
ip route | grep default
deve ser suficiente. Pode dar mais de um, dependendo das interfaces de rede.fonte
Eu uso isso com bastante frequência e fácil de lembrar:
fonte
190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1
para obter apenas o problema de IP
190.200.200.107
fonte