時間に応じて、2つの異なる/ etc / hostsがあります。

時間に応じて、2つの異なる/ etc / hostsがあります。

私は自分自身のための生産性スイートを作成しようとしています。私の最初の目標は、0900時から1600時までFacebook、Gmail、Stackexchangeをブロックすることでした。

現在、私は/etc/hostsgmailとstackexchangeについて0.0.0.0 www.facebook.comと同様のコンテンツを編集して追加しました。

しかし、スクリプトにブロック期間を含める方法は少し混乱しています。

私の考えは、2つの異なるファイル(hosts_allow、host_ブロック)を持ち、時間に依存するcp hosts_allow hostsことですcp hosts_block hosts。しかし、これを行うには、無限ループを入力する必要があるのか​​、それとも問題を解決するための最良の方法かはわかりません。

どんな手がかりがありますか?

答え1

使用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時までの0分に/etc/hosts与えられたシェルコマンドを使用して上書きされることを意味します。

実際にはもっと複雑なものが欲しいかもしれません。

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

5番目の位置の変化は、1-5勤務時間と遊び時間の変化が月曜日から金曜日にのみ発生することを意味します。

man 5 crontabファイルに対して実行できるすべての操作についての完全な指示を受けてくださいcrontab

hostsところで、上記のファイル名がhosts_allow近すぎて名前を変更しましたhosts.allowTCPラッパー

答え2

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

関連情報