Два різних / etc / hosts залежно від часу


11

Я намагаюся скласти набір продуктивності для себе. Моя перша мета - заблокувати Facebook, Gmail та Stackexchange з 0900 до 1600.

На сьогодні я відредагував свій /etc/hostsі додав 0.0.0.0 www.facebook.com та подібні для gmail та stackexchange.

Але я трохи розгублений у тому, як включити тривалість блокування у свій сценарій.

Я вважав, що є два різних файли (hosts_allow, hosts_block), а потім cp hosts_allow hostsабо cp hosts_block hostsзалежно від часу, але тоді це потрібно буде поставити в нескінченний цикл або щось таке, в чому я не впевнений, що це найкращий спосіб вирішити проблему.

Будь-які підказки?


Але ... Але StackExchange підвищує продуктивність! :(
kba

@ KristianBorupAntonsen, не тоді, коли я намагаюся вивчити багатовимірний обчислення: P

1
math.SE завжди корисний! :)
kba

Відповіді:


19

Використовуйте cron.

Скажіть crontab -e як root - або sudo crontab -eякщо ви sudoналаштували - та введіть у файл, який з’являється у текстовому редакторі, наступне:

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

Це говорить про те, що нульову хвилину 9-ї та 16-ї години кожного дня місяця перезаписуйте, /etc/hostsвикористовуючи подані команди оболонки.

Насправді ви хочете чогось складнішого:

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

Ця зміна - поставлення 1-5на п'яту позицію - говорить про зміну між роботою та часом гри лише за понеділок по п’ятницю.

Скажіть, man 5 crontabщоб отримати повне пояснення того, що все, що ви можете зробити у crontabфайлі.

До речі, я змінив імена ваших hostsфайлів вище, тому що hosts_allowце занадто близько до hosts.allow, використовуваному TCP Wrappers .


9
+1 для зміни імені файлу, щоб зменшити подібність tcpwrappers. Також, я б запропонував ln -f, ні cp- занадто просто забути, що будь-які зміни /etc/hostsвидаляти двічі на день, і будь-яке програмне забезпечення, що модифікує /etc/hosts, все одно не буде знати. З lnвами ви матимете принаймні одну постійну копію змін (яка з активних).
Олексій

@Alexios: Аргументів немає.
Воррен Янг

3

Якщо у вас є два різних hostsфайли, ви можете просто запланувати роботу cron, щоб перезаписати файл /etcна певну годину протягом дня.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.