Como abrir automaticamente um URL em horários específicos do dia

Como abrir automaticamente um URL em horários específicos do dia

Estou usando o Kubuntu 14.04. Instalei o cron usando sudo apt-get install cron e criei este arquivo no IDLE, chamado openurl.py.

#!/usr/bin/env python

import webbrowser

webbrowser.open('http://eample.com')

Em seguida, digitei chmod +x openurl.pyno terminal para tornar o arquivo .py executável. Se eu digitar ./openurl.pyno terminal, o script funciona.

em seguida, usando o inicializador de aplicativos inicial, cliquei em configurações do sistema > agendador de tarefas > nova tarefa > procurei o arquivo openurl.py e selecionei quando queria que ele fosse executado.

Se eu digitar crontab -eno terminal, isso será exibido:

#openurl
21 21 * * *     /home/craig/openurl.py


# File generated by KCron the Thursday 29 Jan 2015 21:20.

E então eu espero e nada acontece. O que estou fazendo de errado?

Responder1

Acho que sua configuração do cron está correta. Não estou completamente familiarizado com a função python webbrower.open(), mas presumo que você espera que o script python abra sua página em uma janela visível do navegador.

Acho que o que está acontecendo aqui é que quando você chama o script na linha de comando, ele funciona porque está sendo executado na sua sessão gráfica. Quando é chamado a partir do cron, ele é executado em uma nova sessão sem os ganchos do ambiente gráfico atual, portanto, não há onde iniciar o navegador. Você pode verificar se o script está sendo executado criando um arquivo com o carimbo de data/hora atual ou gravando o carimbo de data/hora atual em um log em algum lugar.

Se o seu objetivo final é atualizar a página uma vez por dia, você pode procurar um plug-in do navegador para conseguir isso, caso contrário, você precisará descobrir o problema do ambiente.

Responder2

O problema é que o cron não sabe sobre sua sessão de login.

Se o script não funcionar no console do sistema ( ctrl-alt-f1), ele definitivamente não funcionará no cron.

Se você deseja automatizar coisas da GUI, provavelmente é melhor usar um dscheduler baseado em GUI em vez do cron.

Responder3

Como Andrew disse, seu trabalho pode falhar porque exige umSessão X, já que você está tentando abrir um navegador da web. Você deve colocar export DISPLAY=:0;após o agendamento no seu cronjob, como em

21 21 * * * export DISPLAY=:0; /home/craig/openurl.py

Se isso não funcionar, você pode tentar substituir :0pela saída de echo $DISPLAYum terminal gráfico.

informação relacionada