Estoy ejecutando Debian 7 Wheezy y necesito iniciar algunas pantallas al inicio tan pronto como haya una conexión a Internet completamente funcional. Sin embargo, no, si la conexión a Internet se rompió y se volvió a conectar. Entonces, solo en la primera conexión a Internet funcional después del arranque.
¿Podría publicar un script ficticio para esto y decirme dónde colocarlo y hacer que se ejecute en las condiciones dadas?
El script solo necesita iniciar la pantalla y luego finalizar, pero la pantalla debe continuar.
EDITAR
Ya he oído hablar de la /etc/network/if-up.d/
carpeta. Pero, ¿cómo puedo asegurarme de que el script no se ejecute nuevamente si se pierde la conexión a Internet y luego se restablece?
debian
networking
startup
MinecraftShamrock
fuente
fuente
Respuestas:
Pon tu script
/etc/network/if-up.d
y hazlo ejecutable. Se ejecutará automáticamente cada vez que aparezca una interfaz de red.Para que funcione solo la primera vez que se ejecuta en cada arranque, haga que compruebe la existencia de un archivo de marca que cree después de la primera vez. Ejemplo:
fuente
/var/run
hay un sistema de archivos volátil (atmpfs
). Por lo tanto, se garantiza que estará vacío en cada arranque nuevo.python -c 'import os; os.open("/var/run/work-was-already-done", os.O_EXCL|os.O_CREAT, 0)' 2>/dev/null || exit 0
IFACE
no sealo
, o alguna interfaz virtual, o mejor, pruebe la conectividad a Internet haciendo ping.$IFACE
puede tener como valores cualquier interfaz que aparezca. Puede enumerar todas las interfaces que existenip link
o ver cuáles están configuradas para que se muestren mediante escaneo/etc/network/interfaces
Este es un trabajo muy adecuado para
systemd
.Ejecutar un script como un servicio systemd
Si su sistema ejecuta systemd , puede configurar su script para que se ejecute como un servicio systemd que proporciona control sobre el ciclo de vida y el entorno de ejecución, así como las condiciones previas para iniciar el script, como la red en funcionamiento.
La carpeta recomendada para sus propios servicios es
/etc/systemd/system/
(otra opción es/lib/systemd/system
pero que normalmente debería usarse solo para servicios OOTB).Cree el archivo, por ejemplo, con
sudo vim /etc/systemd/system/autossh.service
:Ahora puedes probar el servicio:
Comprobación del estado del servicio:
Detener el servicio:
Una vez que haya verificado que el servicio funciona como se esperaba, habilítelo con:
fuente
La conexión a internet es presentada por una entrada en
/etc/rc6.d/
probablementeS35networking
. Si cambia ese archivo e inserta sus comandos al final, o mejor agregue un/etc/init.d/mystuff
enlace/etc/rc0.d/S36mystuff
a él e inserte sus comandos allí, entonces eso comenzará tan pronto como la red esté activa.fuente
/etc/network/if-up.d
/etc/rc0.d
se ejecutará ningún script en el inicio, esos se ejecutarán en el apagado (nivel de ejecución 0). Al inicio, sería algo/etc/rc2.d
similar o similar. Específicamente para el silbido Debian del OP, es/etc/rcS.d/S12networking
. Todos los enlaces simbólicos al mismo archivo, por supuesto. También BTW @Anthon, gracias por arreglar mi respuesta: "¿Por favor" en lugar de "Put"? ¡Qué extraño error tipográfico!if-up.d
mecanismo genérico que también funciona en una reconexión.