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/hosts
y 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 hosts
o cp hosts_block hosts
dependiendo 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 -e
si lo ha sudo
configurado – 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/hosts
usando 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-5
en 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 crontab
para obtener una explicación completa de todo lo que puede hacer en un crontab
archivo.
Por cierto, cambié los nombres de los hosts
archivos de arriba porque hosts_allow
están demasiado cerca de hosts.allow
, usado porEnvoltorios TCP.
Respuesta2
Si tiene 2 hosts
archivos diferentes, simplemente puede programar una tarea cron para sobrescribir el archivo /etc
a una hora específica durante el día.