![¿Cómo puedo ejecutar el script Python una vez al día si la computadora está encendida y tiene conexión a Internet?](https://rvso.com/image/170282/%C2%BFC%C3%B3mo%20puedo%20ejecutar%20el%20script%20Python%20una%20vez%20al%20d%C3%ADa%20si%20la%20computadora%20est%C3%A1%20encendida%20y%20tiene%20conexi%C3%B3n%20a%20Internet%3F.png)
Me gustaría ejecutar un script de Python todos los días si mi computadora está encendida y conectada a Internet. ¿Cómo puedo hacerlo? mi esfuerzo es
00 14 * * * python3 /home/jaakko/.config/spyder-py3/temp.py
Pero el problema es que no sé si mi computadora está encendida a esa hora y si tiene acceso a Internet.
Respuesta1
Deberías usar anacron
en lugar de cron
. En /etc/cron.daily
, crea un archivo (lo llamaré script
) con este contenido:
#!/bin/sh
while true; do
for host in www.ieee.com www.stackexchange.com; do
if ping -w 4 $host; then
python3 /home/jaakko/.config/spyder-py3/temp.py
exit 0
fi
done
sleep 60
done
Hazlo ejecutable chmod +x script
y listo.
Dominará ping
y ejecutará Python si se recibe una respuesta en 4 segundos. Elige los dominios que mejor se adapten a tus necesidades. Los que proporciono son sólo ejemplos, pero para el acceso general a Internet probablemente serán suficientes.
Si no se recibe ningún paquete, lo intentará nuevamente en 60 segundos.
Tomar nota: Se script
ejecutará como root. Si eso es un problema para usted, puede seguir los pasos presentados enesta respuesta en AskUbuntupara ejecutarlo como su usuario normal.
Respuesta2
También puedes usar aplicaciones GUI simples comocalmarokreloj(disponible con el escritorio KDE). Configúrelo para llamar a su secuencia de comandos en el horario deseado; lo estoy usando para realizar copias de seguridad diarias de mis repositorios, por ejemplo. Y no requiere ningún acceso super o root.
Editar: esto puede suponer que el usuario ha iniciado sesión y mantiene su sesión activa, no estoy 100% seguro de eso.