Dois / etc / hosts diferentes, dependendo da hora

11

Estou tentando criar um conjunto de produtividade para mim. Meu primeiro objetivo é bloquear o Facebook, o Gmail e o Stackexchange das 0900 às 1600.

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

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

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

Alguma pista?

Ulrich Dangel
fonte
Mas ... Mas o StackExchange melhora a produtividade! :(
kba
@KristianBorupAntonsen, não quando eu estou tentando aprender Multivariable Cálculo: P
1
math.SE é sempre útil! :)
kba 24/06

Respostas:

19

Use cron.

Diga crontab -e como root - ou sudo crontab -ese você sudoconfigurou - 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 zerote minuto das 9ª e 16ª horas de todos os dias do mês, sobrescreva /etc/hostsusando 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 - colocar 1-5na quinta posição - diz que a mudança entre trabalho e tempo de jogo acontece apenas de segunda a sexta-feira.

Diga man 5 crontabpara obter uma explicação completa do que você pode fazer em um crontabarquivo.

A propósito, mudei os nomes dos seus hostsarquivos acima, porque hosts_allowé muito próximo hosts.allow, usado pelos TCP Wrappers .

Warren Young
fonte
9
+1 para alterar o nome do arquivo para reduzir a semelhança do tcpwrappers. Além disso, eu sugiro ln -f, não cp- é muito fácil esquecer que quaisquer alterações /etc/hostssão excluídas duas vezes por dia e qualquer software que modifique /etc/hostsnão saberá. Com ln, você terá pelo menos uma cópia persistente das alterações (a que estiver ativa).
Alexios19
@ Alexios: Não há argumento lá.
Warren Young
3

Se você possui 2 hostsarquivos diferentes , pode simplesmente agendar um trabalho cron para substituir o arquivo em /etcuma hora específica durante o dia.

R ..
fonte