Quale comando puoi usare per trovare l'indirizzo IP del gateway (es. L'indirizzo del router di casa) per eth0 in Linux?
Devo ottenere l'indirizzo IP da un'app della riga di comando da utilizzare in uno script di shell.
Quale comando puoi usare per trovare l'indirizzo IP del gateway (es. L'indirizzo del router di casa) per eth0 in Linux?
Devo ottenere l'indirizzo IP da un'app della riga di comando da utilizzare in uno script di shell.
Risposte:
Per stampare solo l'IP gw predefinito:
route -n | grep 'UG[ \t]' | awk '{print $2}'
Per stampare le informazioni sul percorso su tutte le interfacce:
route -n
o
netstat -rn
route -n | awk '{if($4=="UG")print $2}'
route -n|awk '$4~/G/{print $2; exit(0)}'
al primo gateway, ma ip route get IP
è meglio, perché elenca il percorso che verrebbe davvero portato al dato IP, che è difficile da trovare da route
solo
ip route show 0.0.0.0/0 dev eth0 | cut -d\ -f3
è la mia voce :)
cut
è ~ 20 volte più leggero del binario di awk
.
È possibile ottenere il gateway predefinito del sistema dall'output di netstat -r
oroute
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.199.0 0.0.0.0 255.255.255.240 U 0 0 0 virbr1
192.168.200.0 0.0.0.0 255.255.255.240 U 0 0 0 virbr2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0
0.0.0.0 è il gateway predefinito, che punta a 192.168.1.254 al posto mio.
Preferisco il pacchetto iproute :
# get the default route
ip route list | awk ' /^default/ {print $3}'
# get the default route but limit on eth0 (output may be empty)
ip route list dev eth0 | awk ' /^default/ {print $3}'
qualcuno più basso di questo? =)
ip r | awk '/^def/{print $3}'
ip r | awk 'END{print $3}'
tre caratteri in meno.
read x x i x< <(ip r g 1)
, il risultato è nella variabile $ i per un ulteriore utilizzo
netstat -rn |awk '{if($1=="0.0.0.0") print $2}'
questo stamperà in modo pulito l'IP del gateway. (cosa sarebbe lo scripting Linux senza awk ?)
netstat -rn|sed -n '/^0.0.0.0/{ s/^[0. ]*//; s/ .*$//; p; }
Apri Terminale sul tuo sistema operativo Linux Di solito si trova nella barra superiore o inferiore, a seconda della distribuzione Linux che usi Una volta aperta la finestra Terminale, inserisci i seguenti comandi “ip route | grep default ”Ora attendi un secondo per l'output e nota il tuo indirizzo gateway predefinito sullo schermo Il tuo indirizzo gateway dovrebbe assomigliare a 192.168.1.1. Una volta che lo conosci, puoi iniziare a configurare il tuo router tramite il suo pannello di amministrazione web.
Se ciò non risolve la tua rete, potresti aver bisogno di un nuovo router.