[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Orientacion sobre script , Mejor manera de saber si la red esta up.



 Hola:

saegen at gmail.com wrote:
> Hola a todos , agradeceria le echarais un vistazo al script de abajo y me 
> orientarais un poco de lo que deberia de hacer de otra manera , comentaros 
> que este script va a estar colocado en una maquina que bajo ciertas 
> circunstancias se desconecta de la red automaticamente , a priori es 
> imposible saber cuando va a hacerlo , osea que antes de lanzarlo ( se va a 
> hacer monitorizando la carga , cuando sea baja ) he de verificar si esta en 
> red , he investigado maneras de verificar las targetas ( sale por tres , 2 
> pci y una wi-fi) pero no he encontrado nada que sea portable , entonces 
> decidi hacerlo con un ping ¿ seria esto lo mas correcto ? ¿ hay alguna manera 
> de preguntarle al kernel si esta "en linea" sin tener que conocer que 
> targetas hay , en definitiva no me enrrolo mas creo que ya ha quedado claro.
> Agradezco vuestra ayuda , un saludo.
> 
> #!/bin/bash
> ##Guion para mantenimiento para ejecutar por carga y con cron 
> PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
> case "$1" in
>     start)   #<<<ARRANQUE MANUAL O CON INIT
> 	ping -c1 google.com
> 	redon=`echo $?`
> 	if [ "0" -eq "$redon" ]; then
>         echo -n "Comenzando mantenimiento de actualizaciones y copia al 
> servidor remoto de la BD del dia......."
> 	date "+%A, %d-%B-%Y, %R:%S"
>         apt-get update
> 	apt-get autoclean
> 	apt-get -d dist-upgrade
> 	..... MAS SENTENCIAS DE MANTENIMIENTO........
> 	echo "done."
> 	exit 0
> 	else
> 	echo -n "no realizado, ( falta de conexion ó error )"
> 	exit 1
> 	fi
> 	;;
>     startcron)  #<<<ARRANQUE CON CRON
> 	redon=ping -c1 google.com
> .......................................... Y SIGUE
> 
> 
> 
> 

 La solución del ping no la veo mal. Una laternativa que se me ocurre es
 usar algo como:

          /sbin/ifconfig -a |grep RUNNING |wc -l

que daría la cuenta del número de interfaces levantadas. Eso suponiendo
que la desconexión se produzca deshabilitando (tirando abajo) la
interfaz. Tiene dos pegas: la primera es que cuenta también la interfaz
de lazo (loopback) y los túneles activos; la segunda es que sólo
comprueba las interfaces, si no hay conexión por algún problema en el
camino (enrutadores, concentradores, ...), no será capaz de detectarlo.

 Otra forma puede ser intentar sacar algo de información leyendo
directamente los archivos de /proc, algunos que se me ocurren:
/proc/net/socket
/proc/net/dev
/proc/net/if_inet6

Un saludo
-- 
--
Gabriel Núñez~
   -
gabriel.nnl(at)estudiante.uam.es -- gabriel.nunez(at)hispalinux.es
//May The Source Be With You//
--//--
--//-- Infórmese sobre las patentes de software: /-
http://proinnova.hispalinux.es/



Reply to: