![Como posso executar o script Python uma vez por dia se o computador estiver ligado e tiver conexão com a Internet?](https://rvso.com/image/170282/Como%20posso%20executar%20o%20script%20Python%20uma%20vez%20por%20dia%20se%20o%20computador%20estiver%20ligado%20e%20tiver%20conex%C3%A3o%20com%20a%20Internet%3F.png)
Eu gostaria de executar um script Python todos os dias se meu computador estiver ligado e conectado à Internet. Como eu posso fazer isso? Meu esforço é
00 14 * * * python3 /home/jaakko/.config/spyder-py3/temp.py
Mas o problema é que não sei se meu computador está ligado naquele horário e se tem acesso à Internet.
Responder1
Você deve usar anacron
em vez de cron
. Em /etc/cron.daily
, crie um arquivo (vou chamá-lo de script
) com este conteúdo:
#!/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
Torne-o executável chmod +x script
e pronto.
Ele ping
dominará e executará python se uma resposta for recebida em 4 segundos. Escolha os domínios que melhor atendem às suas necessidades. Os que forneço são apenas exemplos, mas para acesso geral à Internet provavelmente serão suficientes.
Se nenhum pacote for recebido, ele tentará novamente em 60 segundos.
Tome nota: O script
será executado como root. Se isso for um problema para você, siga as etapas apresentadas emesta resposta no AskUbuntupara executá-lo como seu usuário normal.
Responder2
Você também pode usar aplicativos GUI simples comoalarmeourelógio(disponível na área de trabalho KDE). Configure-o para chamar seu script na programação desejada. Estou usando-o para fazer backup diário de meus repositórios, por exemplo. E não requer nenhum acesso super ou root.
Editar: Isso pode assumir que o usuário está logado e mantém sua sessão ativa, não tenho 100% de certeza sobre isso.