Estoy escribiendo un script de servicio systemd
que registra el uso del ancho de banda cada hora. Si la red se cae,algodebería indicarle a este script que la red está inactiva y que el script se detendrá temporalmente. De manera similar, si la red vuelve a funcionar,éldebería decirle que la red está activa.
Estoy usando bash para escribir scripts en Ubuntu 15.10
Antes de sugerir una solución, tenga en cuenta que no necesito una solución alternativa para esto, como hacer ping a algún servidor.
Respuesta1
Lo mejor que puede hacer es utilizar los estados controlados por eventos que ya están disponibles en Network Manager.
Crea un archivo
NetStatus.x
en/etc
:sudo nano /etc/NetStatus.up
Agregue el siguiente texto:
Este es el archivo NetStatus. Si su nombre tiene una extensión "arriba", significa que el estado de la red está activo, mientras que una extensión "abajo" significa que está inactivo. (¡Eh!)
Edite
/etc/NetworkManager/dispatcher.d/01ifupdown
y agregue las declaraciones en negrita a continuación:case "$2" in up|vpn-up) export MODE="start" export PHASE="post-up" exec run-parts /etc/network/if-up.d mv /etc/NetStatus.down /etc/NetStatus.up ;; down|vpn-down) export MODE="stop" export PHASE="post-down" exec run-parts /etc/network/if-post-down.d mv /etc/NetStatus.up /etc/NetStatus.down ;;
Modifique su propio script de recopilación para verificar la existencia de
/etc/NetStatus.up
antes de comenzar a recopilar datos mediante el siguiente fragmento de código:if [ -e /etc/NetStatus.up ] ; then #move your existing collection in here fi
¿Por qué?
Cambiar el nombre es la forma más rápida de cambiar el estado en cualquier sistema operativo, incluidos los sistemas basados en disquetes, y es extremadamente fácil de usar. He usado el sistema anterior para tener estados de servidor, estados de respaldo, estados de cálculo desde sistemas humildes basados en MS-DOS hasta súper computadoras.