web-dev-qa-db-ja.com

午後7時から午前7時までインターネットをブロックするcronジョブを作成するにはどうすればよいですか? (だから私は少し眠ることができます)

OSX 10.6を使用していて、cronが組み込まれています。毎日午後7時から午前7時までインターネットをブロックするcronジョブを作成するにはどうすればよいですか。

これは単純なはずですが、オンラインで1つの例しか見つけられず、機能しませんでした。それは言った:

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

私はこれをしました、そして、グーグルはまだ出てきました。

6
user242065

Armardeepに感謝します。ルートから実行されていないジョブの問題をデバッグするために何時間も費やした後、私はあなたが言ったことを機能させることができました。これが私の正確なステップです:

ターミナルタイプ:

$ Sudo crontab -eu root

次に、次のように入力します。

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

そしてそれはそれをします! AmardeepとStephenrに感謝します

8
user242065

アランからのペアレンタルコントロールの回答は、おそらくこれを行うための最良の方法です。ただし、後世のために、ホストの試行が機能しなかった理由とcronタイプのソリューションについて説明します。

Hosts.allow(および対応するhosts.deny)は、特定のサービスを使用してマシンへのアクセスを許可(または禁止)するホストを指定するために使用されますyour。あなたがやろうとしているのは逆で、それがうまくいかなかった理由です。

ネットワークを切断してから再接続する必要があるcrontabエントリは、次のような「何か」になります。

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

cronは多くの* nixシステムで異なる方法で実装されており、上記の形式にはバリエーションがあるため、マニュアルページを参照してください。申し訳ありませんが、OSX固有の詳細を提供することはできません。セキュリティ上の理由から、一部のcron実装では、コマンドの実行時に限られた環境変数のみが設定されるため、シェルプロンプトで「whichifconfig」と入力してフルパスを指定する必要があります。 stdoutリダイレクトを削除することで、ある程度デバッグできます。多くのcronは、コマンドの出力を電子メールで送信するか、ログファイルにリダイレクトするだけです。

OSXイーサネットデバイスの名前がわかりません... eth0とは異なる可能性があります。 ifconfigと入力するだけで、アクティブなデバイス名が表示されます。 ifconfigを実行するには、rootである必要がある場合があります。 crontabファイルを編集するには、rootである必要があります。

4
Amardeep

OS Xでは、 ペアレンタルコントロール の使用を検討してください。それはあなたが探していることを正確に行います。

3
Alan

SelfControl これを正確に実行します。再起動しても停止しません。

2
williamR

なぜcronを使用するのですか?このアプリをチェックしてください、はるかに良く、もっとたくさんのことをします: http://getconcentrating.com/

1
elsurudo

以下をcrontabに追加して、インターネットへの通信を効果的に無効にするデフォルトルートを削除します(ただし、ネットワーク接続は維持されます)。

無効にするには(a.b.c.dはルーターです):

route delete default a.b.c.d

再度有効にする:

route add default a.b.c.d
1
nolim1t

プラグを抜くかオフにするだけです。1〜2本の指だけで解決できるソリューションを探すのに時間を無駄にするのはなぜですか。なぜこれも投稿されたのですか笑

1
int64_t

Macでは、イーサネットポートはen0と呼ばれ、wifiポートはen1と呼ばれます。

これを確認するには、[システム環境設定]-> [ネットワーク]に移動し、[イーサネット]を選択し、[詳細設定]をクリックして、[イーサネット]タブを確認します。これにより、Macアドレスがわかります。同じことを行いますが、空港を選択してWi-FiポートのMACアドレスを取得します。

次に、ターミナルでifconfigと入力して、ネットワークインターフェイスのリストを取得します。これにより、各インターフェイス(en0、en1など)のインターフェイス名と、「ether」というラベルの付いたMACアドレスを含むその他の情報が表示されます。

インターフェイスの名前がわかったら、Amardeepの説明に従って、cronジョブを設定してそれらを無効にすることができます。 -eth0の代わりにen0を使用し、wifiポートに対して繰り返します。

0
stephenr

Freedom 怠惰な場合は、良い選択肢が見つかるかもしれません。料金は10u $ sですが、気を散らすものはありません。

0