Estou tentando criar um conjunto de produtividade para mim. Meu primeiro objetivo é bloquear Facebook, Gmail e Stackexchange das 09h00 às 16h00.
A partir de agora, editei /etc/hosts
e adicionei 0.0.0.0 www.facebook.com e similares para Gmail e StackExchange.
Mas estou um pouco confuso sobre como incluir a duração do bloqueio no meu script.
O que eu pensei era ter 2 arquivos diferentes (hosts_allow, hosts_block) e então cp hosts_allow hosts
ou cp hosts_block hosts
dependendo do tempo, mas isso precisaria ser colocado em um loop infinito ou algo que não tenho certeza se é a melhor maneira de abordar o problema.
Alguma pista?
Responder1
Usar cron
.
Dizercrontab -e
como raiz— ou sudo crontab -e
se você sudo
configurou — e coloque o seguinte no arquivo que aparece no editor de texto:
0 9 * * * cp /etc/hosts_worktime /etc/hosts
0 16 * * * cp /etc/hosts_playtime /etc/hosts
Isso diz que no minuto zero das 9 e 16 horas de cada dia do mês, sobrescreva /etc/hosts
usando os comandos shell fornecidos.
Você pode realmente querer algo um pouco mais complicado:
0 9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts
Essa única mudança – colocar 1-5
a quinta posição – diz que a mudança entre o horário de trabalho e de lazer acontece apenas de segunda a sexta-feira.
Diga man 5 crontab
para obter uma explicação completa de tudo o que você pode fazer em um crontab
arquivo.
Aliás, mudei os nomes dos seus hosts
arquivos acima, pois hosts_allow
é muito próximo do hosts.allow
, usado porWrappers TCP.
Responder2
Se você tiver dois hosts
arquivos diferentes, poderá simplesmente agendar um cron job para substituir o arquivo em /etc
uma hora específica durante o dia.