Dos / etc / hosts diferentes según la hora

11

Estoy tratando de hacer una suite de productividad para mí. Mi primer objetivo es bloquear Facebook, Gmail y Stackexchange de 0900 a 1600.

A partir de ahora, he editado mi /etc/hostsy añadido 0.0.0.0 www.facebook.com y otros similares para gmail y stackexchange.

Pero estoy un poco confundido acerca de cómo incluir la duración del bloqueo en mi script.

Lo que pensé es tener 2 archivos diferentes (hosts_allow, hosts_block) y luego cp hosts_allow hostso cp hosts_block hostsdependiendo del tiempo, pero esto debería colocarse en un bucle infinito o algo que no estoy realmente seguro es la mejor manera de abordar el problema.

¿Alguna pista?

Ulrich Dangel
fuente
Pero ... ¡Pero StackExchange mejora la productividad! :(
kba
@KristianBorupAntonsen, no cuando estoy tratando de aprender Cálculo multivariable: P
1
math.SE siempre es útil! :)
kba

Respuestas:

19

Uso cron.

Dígalo crontab -e como root , o sudo crontab -esi lo ha sudoconfigurado, y coloque lo siguiente en el archivo que aparece en el editor de texto:

0  9 * * * cp /etc/hosts_worktime /etc/hosts
0 16 * * * cp /etc/hosts_playtime /etc/hosts

Esto dice que en el minuto cero de las 9 y 16 horas de cada día del mes, sobrescriba /etc/hostsusando los comandos de shell dados.

En realidad, es posible que desee algo un poco más complicado:

0  9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts

Ese único cambio, colocarse 1-5en la quinta posición, dice que el cambio entre el tiempo de trabajo y el de juego ocurre solo de lunes a viernes.

Diga man 5 crontabpara obtener una explicación completa de todo lo que puede hacer en un crontabarchivo.

Por cierto, cambié los nombres de sus hostsarchivos anteriores, porque hosts_allowestá demasiado cerca de hosts.allow, utilizado por TCP Wrappers .

Warren Young
fuente
99
+1 para cambiar el nombre de archivo para reducir la similitud de tcpwrappers. Además, sugiero que ln -fno cp, es demasiado fácil olvidar que cualquier cambio /etc/hostsse eliminará dos veces al día, y cualquier software que modifique /etc/hostsno lo sabrá de todos modos. Con ln, al menos tendrá una copia persistente de los cambios (la que esté activa).
Alexios
@Alexios: No hay discusión allí.
Warren Young
3

Si tiene 2 hostsarchivos diferentes , simplemente puede programar un trabajo cron para sobrescribir el archivo /etca una hora específica durante el día.

R ..
fuente