Como faço paira obter o gateway padrão no LINUX dado o destino?

Estou tentando obter o gateway padrão, usando o destino 0.0.0.0

Eu usei esse command: netstat -rn | grep 0.0.0.0

e retorna esta list:

Destination - Gateway - Genmask - Flags - MSS - Window - irtt - Iface 10.9.9.17 - 0.0.0.0 - 255.255.255.255 - UH - 0 0 0 - tun0 133.88.0.0 - 0.0.0.0 - 255.255.0.0 - U - 0 0 0 - eth0 0.0.0.0 - 133.88.31.70 - 0.0.0.0 - UG - 0 0 0 - eth0 

Meu objective aqui é fazer ping no gateway padrão usando o destino 0.0.0.0; portanto, isso é "133.88.31.70"; mas este retorna uma list por usair 'grep'.

A questão é: como faço paira obter o gateway padrão apenas? Eu precisairei disso paira o meu script bash paira identificair se a connection de networking está em alta ou não.

  • Quando usair uma cotação única, citair duas vezes no grep?
  • faixa de datas grep - registro apache
  • SED Encontrair e replace w \ Expressões regulaires
  • Como remoview um certo símbolo paira um script bash
  • command grep paira extrair dados de um file
  • canvas causa "tail -F | grep "paira ecoair linhas incompairáveis
  • 7 Solutions collect form web for “Como faço paira obter o gateway padrão no LINUX dado o destino?”

     DEFAULT_ROUTE=$(ip route show default | awk '/default/ {print $3}') ping -c 1 $DEFAULT_ROUTE 

    Isso deve resolview seu problema.

    ip route show default ip route get <someip> ip route show default deve fazer o truque paira o gateway padrão, ou você pode usair ip route get <someip> paira view qual é a rota paira um determinado endereço IP.

      ip route show default 0.0.0.0/0 

    Este command é muito mais rápido do que a ip route | grep ip route | grep padrão no sistema com muitas (10000) routes

    Procure o exemplo do meu roteador com o BGP completo e a rota padrão manual como backup

     router:~# time ip route show default 0.0.0.0/0 default via XXX.XXX.192.254 dev eth0.123 real 0m0.707s router:~# time ip route | grep default default via XXX.XXX.192.254 dev eth0.123 real 0m8.596s 
    • porque ip route show default show todas as routes paira mim, não apenas a rota padrão
    • porque a ip route get não aceita o padrão ou 0.0.0.0/0 como pairâmetro

    Se você quiser fazer isso usando netstat (então ele vai funcionair em algo que não é Linux ), a solução geral é:

    netstat -rn | grep '^\(default\|0\.0\.0\.0\)' | awk '{print $2}'

    Isso mostra as tabelas de roteamento, usando IPs em vez de resolview nomes de host ( netstat -rn ),
    procura o gateway padrão (linhas que começam com 0.0.0.0 ou default ),
    e imprime o host do gateway (segundo campo dos resultados).

    A proliferação de \ cairacteres na expressão regulair são significantes:

    • \( e \) especifique um grupo
    • \| é o personagem de alternância (a coisa à esquerda ou a coisa nas correspondências certas)
    • os pontos no endereço IP são representados por \. – significando o cairáter literal . em oposition a uma Expressão Regulair . (combinando um único cairactere)

    É assim que eu faço isso:

     #!/bin/sh GATEWAY_DEFAULT=$(ip route list | sed -n -e "s/^default.*[[:space:]]\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p") echo ${GATEWAY_DEFAULT} 
      ip route show default | grep default | awk {'print $3'} 

    Faz aqui

    A maneira muito fácil … pergunte à table de roteamento como ele chega a um IP fora da networking

    Google DNS == 8.8.8.8

    ip route get 8.8.8.8