Ubuntu 16.04 Não é possível bloquear a tela com Cron

1

Desejo usar o cron para bloquear a tela em um horário específico todos os dias. Eu tenho um script muito simples contendo o seguinte: gnome-screensaver-command -l (bloqueia a tela). Eu sei que este programa funciona porque eu tenho executado manualmente através do terminal e foi recebido com sucesso, no entanto, cron parece ser incapaz de bloquear a tela. Eu estou usando o Ubuntu 16.04 LTS, se isso ajuda. Meu crontab está abaixo.

MALTO=arctic_hen7
SHELL=/bin/bash
25 7 * * * export DISPLAY=:0 && /home/arctic_hen7/bin/lockscreen

Eu tentei reiniciar o cron e também executar o comando diretamente através do cron (em vez de executar o arquivo) e nenhuma delas funcionou. Eu tentei mudar o tempo que a tarefa é executada e esperando o próximo minuto, mas nunca executa, no entanto, quando eu corro service cron status , eu entendo isso:

(arctic_hen7) RELOAD (crontabs/arctic_hen7)
pam_unix(cron:session): session opened for user arctic_hen7 by (uid=0)
(arctic_hen7) CMD (export DISPLAY=:0 && /home/arctic_hen7/bin/lockscreen)
(CRON) info (No MTA installed, discarding output)

Eu gostaria de saber se estou fazendo algo errado, ou se há outra maneira de fazer com que o cron bloqueie a tela. Estou aberto a sugestões sobre aplicações de agendamento alternativo, se necessário, no entanto, as respostas sobre o cron seriam preferíveis.

    
por Arctic_Hen7 21.09.2017 / 01:59

1 resposta

0

A primeira coisa que você precisa fazer é instalar algum tipo de MTA (agente de transporte de mensagens) para que possa enviar a saída do seu comando cron por e-mail. Como as coisas estão atualmente, as principais informações de diagnóstico estão sendo descartadas, então você vai se esforçar para consertar as coisas. Eu recomendaria mssmtp como um simples ponto de partida.

Instruções para configurar o mssmtp copiado de aqui para evitar link rot:

Para começar, precisamos instalar três pacotes:

sudo apt-get install msmtp msmtp-mta ca-certificates

Depois de instalados, é necessária uma configuração padrão. Por padrão, o msmtp vai olhar para / etc / msmtprc, então criei isso usando o vim, embora qualquer editor de texto faça o truque. Este arquivo foi parecido com isto:

# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Setup WP account's settings.
account <MSMTP_ACCOUNT_NAME>
host smtp.gmail.com
port 587
auth login
user <EMAIL_USERNAME>
password <PASSWORD>
from <FROM_ADDRESS>
logfile /var/log/msmtp/msmtp.log

account default : <MSMTP_ACCOUNT_NAME>

Qualquer um dos itens em maiúsculas (por exemplo, <PASSWORD> ) são coisas que precisam ser substituídas especificamente para sua configuração. A exceção a isso é o arquivo de log, que pode, é claro, ser colocado onde quer que você deseje registrar qualquer atividade / aviso / erro do msmtp.

Depois que o arquivo for salvo, atualizaremos as permissões no arquivo de configuração acima - o msmtp não será executado se as permissões desse arquivo forem muito abertas - e crie o diretório para o arquivo de registro.

sudo mkdir /var/log/msmtp
sudo chown -R www-data:adm /var/log/msmtp
sudo chmod 0600 /etc/msmtprc

Em seguida, escolhi configurar o logrotate para os logs do msmtp, para garantir que os arquivos de log não fiquem muito grandes, além de manter o diretório de log um pouco mais organizado. Para fazer isso, criamos o /etc/logrotate.d/msmtp e o configuramos com o seguinte arquivo. Note que isto é opcional, você pode optar por não fazer isso, ou você pode optar por configurar os logs de maneira diferente.

/var/log/msmtp/*.log {
rotate 12
monthly
compress
missingok
notifempty
}

Agora que o registro está configurado, precisamos dizer ao PHP para usar o msmtp editando o /etc/php/7.0/apache2/php.ini e atualizando o caminho do sendmail de

sendmail_path =

para

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a <MSMTP_ACCOUNT_NAME> -t"

Aqui, deparo com um problema em que, embora eu tenha especificado o nome da conta, ele não estava enviando e-mails corretamente ao testá-lo. É por isso que o padrão da conta de linha: foi colocado no final do arquivo de configuração msmtp. Para testar a configuração, certifique-se de que o arquivo PHP foi salvo e execute o serviço sudo apache2 restart, então execute php -a e execute o seguinte

mail ('[email protected]', 'Test Subject', 'Test body text');
exit();

Quaisquer erros que ocorram neste momento serão exibidos na saída, portanto, o diagnóstico de erros deve ser feito após o teste ser relativamente fácil.

    
por 28.09.2017 / 21:28