No * nix, para encontrar o gateway:
GW="$(sudo /sbin/route -n | awk '$1=="0.0.0.0" {print $2; exit}')"
sudo /sbin/route del default gw "$GW"
echo "$GW" >~/my_tmp_file
A última linha salva o valor em um arquivo para uso posterior quando você quiser reiniciar a rede:
sudo /sbin/route add default gw "$(cat ~/my_tmp_file)"
Nota : Se houver mais de um gateway padrão, será necessário que esse código seja executado novamente para cada um deles ou seja reescrito para suportar isso.
Como funciona: O comando awk
acima é capaz de capturar o gateway porque route -n
output se parece com:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.1 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
O gateway da internet é aquele que permite o destino em qualquer lugar ( 0.0.0.0
). Assim, o script awk
passa por este resultado linha por linha olhando para a primeira coluna (chamada $1
em awk
notação). Quando a primeira coluna é destino em qualquer lugar, ela imprime a segunda coluna, que é o gateway. A saída do comando awk
é então capturada na variável GW
da shell. O shell pode então ser solicitado a substituir $GW
em qualquer comando que precise dele.