時間に応じて2つの異なる/etc/hosts

時間に応じて2つの異なる/etc/hosts

私は自分用の生産性スイートを作ろうとしています。最初の目標は、午前 9 時から午後 6 時まで Facebook、Gmail、Stackexchange をブロックすることです。

現時点では、私は自分のものを編集し、/etc/hosts0.0.0.0 www.facebook.com と、Gmail および Stackexchange 用の同様のものを追加しました。

しかし、スクリプトにブロック期間をどのように含めるかについては少し混乱しています。

私が考えたのは、2 つの異なるファイル (hosts_allow、hosts_block) を用意し、時間に応じて変更することcp hosts_allow hostsですcp hosts_block hostsが、その場合、これを無限ループなどに配置する必要があり、それが問題に対処する最善の方法であるかどうかはよくわかりません。

何か手がかりは?

答え1

使用cron

言うcrontab -e ルートとして— または設定sudo crontab -eしている場合はsudo— テキスト エディターに表示されるファイルに次の内容を入力します。

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

これは、毎月毎日の 9 時と 16 時の 0 分に、/etc/hosts指定されたシェル コマンドを使用して上書きすることを意味します。

実際には、もう少し複雑なものが必要な場合があります。

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

その 1 つの変更 ( 1-55 番目の位置に配置する) は、仕事と遊びの時間の切り替えが月曜日から金曜日のみに行われることを示しています。

man 5 crontabファイル内で何ができるかについて、詳しく説明しますcrontab

ちなみに、hosts上記のファイル名はhosts_allowに近すぎるため変更しましたhosts.allowTCP ラッパー

答え2

2 つの異なるファイルがある場合は、日中の特定の時間にhostsファイルを上書きする cron ジョブをスケジュールするだけです。/etc

関連情報