Dois / etc / hosts diferentes dependendo da hora

11

Estou tentando criar um pacote de produtividade para mim mesmo. Meu primeiro objetivo é bloquear o Facebook, o Gmail e o StackExchange das 9h às 16h.

A partir de agora, editei meu /etc/hosts e adicionei 0.0.0.0 www.facebook.com e outros semelhantes para o gmail e o stackexchange.

Mas estou um pouco confuso sobre como incluir a duração do bloqueio no meu script.

O que eu pensei é ter dois arquivos diferentes (hosts_allow, hosts_block) e, em seguida, cp hosts_allow hosts ou cp hosts_block hosts dependendo do tempo, mas isso precisaria ser colocado em um loop infinito ou algo que eu não tenho certeza a melhor maneira de abordar o problema.

Alguma pista?

    
por Ulrich Dangel 24.06.2012 / 10:10

2 respostas

19

Use cron .

Diga crontab -e como raiz - ou sudo crontab -e se tiver sudo configurado - 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 da 9ª e 16ª horas de todos os dias do mês, sobrescreva /etc/hosts usando os comandos de 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 mudança - colocando 1-5 na quinta posição - diz que a mudança entre o trabalho e o tempo de jogo 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 arquivo crontab .

A propósito, eu mudei os nomes dos seus arquivos hosts acima, porque hosts_allow é muito próximo de hosts.allow , usado por TCP Wrappers .

    
por 24.06.2012 / 10:23
3

Se você tiver dois arquivos hosts diferentes, basta agendar uma tarefa do cron para substituir o arquivo em /etc em uma hora específica durante o dia.

    
por 24.06.2012 / 10:18

Tags