Linhas diretas:
-
nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
-
nm-tool | grep -i gateway | awk '{print }
-
netstat -nr | awk ' == "0.0.0.0"{print}'
-
arp -n | awk '{print }'
Nota: funciona apenas se a sua máquina for a única na rede -
ip route show | grep -i 'default via'| awk '{print }'
saída: 192.168.0.1
para mim
NOTA :
Para 15.04 e posterior, não há nm-tool
, portanto 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, pegamos a saída de nm-tool
(que, tomamos as informações do NetworkManager), encontramos a linha contendo a palavra gateway
, imprimimos as informações com eco (separadas por espaços) e em seguida, corte apenas o segundo item dessa saída inteira. Observe que, se você tiver duas ou mais conexões, talvez seja necessário remover top xargs echo | cut -d' ' -f2
part e substituí-lo por awk '{print }'
; em outras palavras, toda a linha ficaria assim em nm-tool | grep -i gateway | awk '{print }'
. 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 feito aqui, e toda a provação aqui é apenas um exercício de 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 comando nmcli dev list
(sim, ainda contando com o gerenciador de rede). nmcli
é a versão de linha de comando do gerenciador de rede. Você pode executar nmcli dev list | grep -i routers
ou executar nmcli dev list | grep -i 'gw ='
. Novamente, você poderia se exercitar no corte de todas as outras informações, exceto o endereço IP desejado, se quisesse.
Como na pergunta original a única especificação era imprimir apenas o gateway padrão, estou contando com a saída da nm-tool 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 o wicd ou o wpa_cli, a ferramenta nm não fornecerá uma resposta. Nesse caso, você pode encontrar as respostas de outras pessoas abaixo mais úteis.
Uma opção mais neutra e neutra de 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 suas informações desejadas: netstat -nr | awk ' == "0.0.0.0"{print}'
Outro, também neutro: arp -n | awk '{print }'