Dois /etc/hosts diferentes dependendo da hora

Dois /etc/hosts diferentes dependendo da hora

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/hostse 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 hostsou cp hosts_block hostsdependendo 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 -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 minuto zero das 9 e 16 horas de cada dia do mês, sobrescreva /etc/hostsusando 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-5a 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 crontabpara obter uma explicação completa de tudo o que você pode fazer em um crontabarquivo.

Aliás, mudei os nomes dos seus hostsarquivos acima, pois hosts_allowé muito próximo do hosts.allow, usado porWrappers TCP.

Responder2

Se você tiver dois hostsarquivos diferentes, poderá simplesmente agendar um cron job para substituir o arquivo em /etcuma hora específica durante o dia.

informação relacionada