Parece que sua pergunta é mais "Como posso testar programaticamente a largura de banda disponível?" Para o seu teste de ping, você poderia fazer algo assim:
root@xxxxxxlp01 ~ $ ping ehswebvlp10 -c4 | egrep -wo "time=.*" | cut -f2 -d= | awk '{ sum+=$1} END {print sum/4}'
0.49
root@xxxxxxlp01 ~ $ ping ehswebvlp10 -c4 | egrep -wo "time=.*" | cut -f2 -d= | awk '{ sum+=$1} END {print sum/4}'
0.208
root@xxxxxxlp01 ~ $ ping ehswebvlp10 -c4 | egrep -wo "time=.*" | cut -f2 -d= | awk '{ sum+=$1} END {print sum/4}'
0.217
Em seguida, faça alguma lógica de ramificação com base no número que você recebe. Outro teste seria usar nc
para estabelecer uma conexão TCP com um servidor remoto em um período de tempo especificado usando a opção -w
para especificar um tempo limite em segundos. Exemplo:
root@xxxxxxlp01 ~ $ nc -vz google.com 80 -w 3
Connection to google.com 80 port [tcp/http] succeeded!
Então faça sua ramificação a partir disso.
É importante para a estabilidade que seus testes sejam feitos em um período de tempo para permitir o congestionamento temporário. Caso contrário, suas interfaces podem acabar oscilando. Por exemplo, se o ping estiver acima de seu limite, se for sleep 15
ou algo assim e verifique uma segunda vez.
Eu também usaria logger
para jogar algo em syslogd
toda vez que você fizer uma alteração na rota padrão. Caso contrário, você pode esquecer que fez isso, obter alguma coisa de rede estranha daqui a 4-5 meses e precisar de ajuda para descobrir o que continua mudando a rota padrão.