¿Cómo puedo ejecutar el script Python una vez al día si la computadora está encendida y tiene conexión a Internet?

¿Cómo puedo ejecutar el script Python una vez al día si la computadora está encendida y tiene conexión a Internet?

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 anacronen 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 scripty listo.

Dominará pingy 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 scriptejecutará 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.

información relacionada