Dos /etc/hosts diferentes dependiendo del tiempo

Dos /etc/hosts diferentes dependiendo del tiempo

Estoy intentando crear una suite de productividad para mí. Mi primer objetivo es bloquear Facebook, Gmail y Stackexchange de 09:00 a 16:00.

A partir de ahora, edité /etc/hostsy agregué 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 secuencia de comandos.

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 luego esto tendría que colocarse en un bucle infinito o algo que no estoy realmente seguro de que sea la mejor manera de abordar el problema.

¿Alguna pista?

Respuesta1

Usar cron.

Decircrontab -e como raíz– 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 horas 9 y 16 de cada día del mes, sobrescriba /etc/hostsusando los comandos de shell proporcionados.

Quizás quieras 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 cambio, colocarse 1-5en la quinta posición, dice que el cambio entre el tiempo de trabajo y de juego ocurre sólo 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 los hostsarchivos de arriba porque hosts_allowestán demasiado cerca de hosts.allow, usado porEnvoltorios TCP.

Respuesta2

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

información relacionada