6

Я использую OSX 10.6, и он имеет встроенный Cron. Как я могу написать работу cron, которая будет блокировать мой интернет с 7 вечера до 7 утра каждый день?

Я уверен, что это должно быть просто, но я мог найти только один пример в Интернете, и он не работал. Он сказал:

set /etc/hosts.allow file to 
be empty 
set hosts.deny file to
ALL : ALL

Я сделал это, и Google все еще подошел.

9 ответов9

8

Спасибо, Armardeep, потратив много часов, пытаясь отладить проблему с заданием, которое не запускалось из-под root, я смог получить то, что вы сказали, что оно работает. Вот мои точные шаги:

В терминале введите:

$ sudo crontab -eu root

Затем введите:

0 19 * * * /sbin/ifconfig en0 down > /dev/null
0 7 * * * /sbin/ifconfig en0 up > /dev/null

и это делает это! Спасибо Амардип и Стивенр

4

Ответ родительского контроля от Алана, вероятно, лучший способ сделать это. Но просто для потомства я опишу, почему попытка ваших хостов не сработала, и опишу решение типа cron.

Hosts.allow (и его аналог hosts.deny) используются для указания хостов, которым разрешен (или запрещен) доступ к вашему компьютеру с помощью определенных сервисов. То, что вы хотите сделать, это наоборот, поэтому это не сработало.

Записи в crontab, которые должны отключиться, а затем снова подключиться к вашей сети, будут выглядеть примерно так:

0 19 * * * /path/ifconfig eth0 down 1> /dev/null
0  7 * * * /path/ifconfig eth0 up   1> /dev/null

Cron реализован по-разному во многих системах * nix, и есть различия в вышеуказанном формате, так что обратитесь к вашей справочной странице. Извините, я не могу предложить OS X конкретные детали. По соображениям безопасности некоторые реализации cron устанавливают только ограниченные переменные окружения при выполнении команды, поэтому вы должны указать полный путь, набрав «which ifconfig» в командной строке. Вы можете отладить его, удалив перенаправление stdout, и многие хроны должны отправить вам вывод команды по электронной почте, или вы можете просто перенаправить файл журнала.

Я не уверен, как называется сетевое устройство OS X ... это может быть что-то отличное от eth0. Просто введите ifconfig, и он должен отображать имена активных устройств. Возможно, вам придется быть пользователем root, чтобы даже запустить ifconfig. Для редактирования файла crontab вам, безусловно, нужно быть пользователем root.

3

В OS X рассмотрите возможность использования Родительского контроля. Он будет делать именно то, что вы ищете.

2

SelfControl делает именно это. Даже перезагрузка не остановит это.

1

Зачем использовать cron? Проверьте это приложение, гораздо приятнее и делает гораздо больше: http://getconcentrating.com/

1

Добавьте следующее в crontab, чтобы удалить маршрут по умолчанию, который фактически отключит любую связь с Интернетом (но все еще сохранит сетевое подключение).

Чтобы отключить (где abcd - ваш маршрутизатор):

route delete default a.b.c.d

Чтобы снова включить:

route add default a.b.c.d
1

Просто отключите его или выключите, зачем тратить время на поиск решения, которое требует всего 1-2 пальца. Почему это было даже опубликовано лол

0

На Mac порт Ethernet называется en0, а порт wifi en1.

Вы можете убедиться в этом, перейдя в «Системные настройки» -> «Сеть», затем выбрав «Ethernet», нажав «Дополнительно», а затем перейдя на вкладку «Ethernet» - здесь будет указан MAC-адрес. Сделайте то же самое, но выберите Аэропорт, чтобы получить MAC-адрес порта Wi-Fi.

Затем в терминале введите ifconfig, чтобы получить список сетевых интерфейсов, который покажет вам имя интерфейса для каждого интерфейса (en0, en1 и т.д.) И загрузку другой информации, включая mac-адрес, который помечен как «ether».

Как только вы узнаете, как называются интерфейсы, вы можете настроить задания cron, чтобы отключить их, как описано Amardeep. - используйте en0 вместо eth0 и повторите для порта wifi.

0

Вы можете найти Freedom хорошей альтернативой, если вы ленивы. Это стоит 10 долларов США, но это хороший способ сказать хорошо, не отвлекаясь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .