De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Anderson J. de Souza
Data de Publicação: 05 de Abril de 2007
Este script define automaticamente as rotas para as redes de uma operador como embratel, brasiltelecom, gvt ou outras,...
Apenas se vc utiliza dois links de operadoras diferentes.
#!/bin/sh # # Agentroute # Mini agente de configuração de rotas # # Captura as os ips das placas de rede e define as rotas para as operadoras (brt,gvt,...) conforme for melhor # # Por Anderson J. de Souza ( 14/02/07 ) # anjoel.s@gmail.com # +55 (54) 9115.13.15 # WHOIS="whois" GREP="grep" AWK="awk" IFCONFIG="ifconfig" PIDFILE="/var/run/agentroute.pid" TIMECHECK=360; # fazer rechecagem a cada n minutos (360=6horas) GATEWAYS="10.1.1.1 200.xxx.xxx.xxx 192.168.1.1" # gateways, favor informar todos ##################################### ## Não alterar apartir deste ponto ## ##################################### ########################### ## Dont change from here ## ########################### COUNTRY="BR" ERautnum='^aut-num:[[:space:]]+AS[0-9]+$' ERinetnum='^inetnum:[[:space:]]+[0-9][0-9./]+[0-9]$' ERinet='^[[:space:]]+inet[[:space:]][0-9][0-9.]+[0-9].*$' ERnetInvalid='^(10|127|192[.]168)[.].*$'; getForeignIP() { fetch -q -o /dev/stdout http://www.whatismyip.com | grep '<TITLE>' | grep -oE '([0-9]{1,3}[.]){3}[0-9]{1,3}'; } doHelp() { f=`basename $0`; echo " Agente de descoberta de rotas da operadora para definilas pelo melhor gateway. $f Faz leitura das redes da operadora e insere elas na tabela de roteamento. $f makeRoutes Mesmo acima. $f start Inicia o programa como um daemon dele mesmo para parar use stop. $f stop Para o programa iniciado com start. $f loop Inicia o programa como um daemon em foreground. $f cleanpid Apaga arquivo de pid que nao eh apagado no modo loop. OBS.: Este agente deve ser usado com dois links de operadoras diverentes. OBS.: Este agente nao remove rotas colocadas. Por Anderson J. de Souza 14/02/2007 anjoel.s@gmail.com +55 (54) 9115.13.15 " } getIPs() { ${IFCONFIG} | ${GREP} -E ${ERinet} | ${AWK} '{print $2}' | ${GREP} -Ev ${ERnetInvalid}; return $?; } checkIP() { # deveria capturar o coutry,... mas nao funciona em todos os casos ${WHOIS} $1 | ${GREP} -E ${ERautnum} | ${AWK} '{print $2}' return $?; } getASNets() { ${WHOIS} -c $1 $2 | ${GREP} -E ${ERinetnum} | ${AWK} '{print $2}' return $?; } netsToIP() { AS=`checkIP $1` [ $? ] || exit $?; getASNets ${COUNTRY} ${AS} return $? } setRoute() { route add ${1} ${2} } rmRoute() { route delete ${1} } setParenNets() { NETS=`netsToIP $1`; for n in ${NETS} ; do setRoute ${n} ${1} done; } setParentNetsForGateWays() { nets=`host www.whatismyip.com | cut -d' ' -f4` default=`netstat -rn | grep -E '^default[[:space:]]+.*$' | awk '{print $2}'` for gw in ${GATEWAYS} ; do ping -Q -m 1 -o -c 1 ${gw} > /dev/null # garante que tem o arp do gw [ ${gw} != ${default} ] && # se nao for o gw default [ arp ${gw} > /dev/null ] && # se o gw existe e esta na mesma rede { for n in $nets ; do setRoute $n ${gw}; done; ForeignIP=`getForeignIP` for n in $nets ; do rmRoute $n; done; NETS=`netsToIP ${ForeignIP}`; for n in ${NETS} ; do setRoute ${n} ${gw} done; sleep 10; } done; } makeRoutes() { setParentNetsForGateWays; } makeLoop() { echo "makeLoop $$" [ ${TIMECHECK} -lt 10 ] && TIMECHECK=360; sleep 10; time=${TIMECHECK}; time=$(( ${time} * 60 )); [ -f ${PIDFILE} ] || echo $$ > ${PIDFILE}; while [ -f ${PIDFILE} ] && [ "`cut -d' ' -f1 ${PIDFILE}`" = "$$" ] ; do echo "makeLoop while $$" makeRoutes; sleep ${time}; done; } cleanPid() { rm -f ${PIDFILE}; } ## Execução do programa case ${1} in [sS][tT][aA][rR][tT]) [ -f ${PIDFILE} ] || { makeLoop & echo "$$ $!" >> ${PIDFILE}; sleep 1; } ;; [sS][tT][oO][pP]) [ -f ${PIDFILE} ] && { kill `cut -d' ' -f2 ${PIDFILE}`; sleep 2; cleanPid; } ;; [rR][eE][sS][tT][aA][rR][tT]) $0 stop; $0 start; ;; [lL][oO][oO][pP]) makeLoop; ;; cleanpid) cleanPid; ;; makeRoutes) makeRoutes; ;; -[hH]) doHelp; ;; *) makeRoutes; ;; esac exit 0; Por Anderson J. de Souza ( 14/02/07 ) anjoel.s@gmail.com +55 (54) 9115.13.15
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários