私には何人かのルームメイトがいて、毎月私のインターネット料金を分割してくれています。時々彼らは私に支払うことを忘れて、私はお金のために彼らを困らせる必要があります
彼らはまだ支払っていないしつこいの3日後の場合, 私は彼らのMACアドレスへのトラフィックをブロックする私のUnixベースのルータにファイアウォールルールを作成します。これは、現金をポニーアップするために滞納ルームメイトを得ることで非常に効果的であることが証明されています
毎月3日のファイアウォールルールにMACアドレスの追加/削除を自動化するにはどうしたらいいですか?お金を払ったら残りの月のブロックを解除する簡単な方法が欲しいです
私は現在pfsenseを使用しています。キャプティブポータルモジュールがありますが、ユーザー単位/月単位のアクセス規制には対応していません
同居人のインターネット接続のブロック/ブロック解除を自動化するには?
56 None 2014-01-02
- 制限付きiptablesルールを追加するbashスクリプトを作成する
- このスクリプトをmonthly cronに入れます
- bashスクリプトの中で、ファイル
~/do_not_block_friends
が存在し、その修正時間が1ヶ月以内(stat -c %y filename
)の場合、スクリプトを実行しないように条件を設定してください - 一度払われたら
touch ~/do_not_block_friends
をする
スクリプトを実行してdo_not_block_friends
が変更されたことを確認するので、iptablesコマンドを実行しません
彼らがあなたにお金を払っていない場合 – スクリプトはそれらをブロックします
支払いが完了したら、別のスクリプトを実行してロックを解除します
これはあまり詳しくない一般的なプランですが、残りの部分を把握するのは難しいことではないと思います
Edit:
そんなスクリプトのもっと簡単な書き方をご紹介します
#!/bin/bash
count=`find ~ -maxdepth 1 -type f -name do_not_block_friends -mtime -31 | wc -l`
if [ "$count" -eq 1 ]; then
# Friends have paid. Do nothing;
else
# Friends have not paid. Run iptables command;
fi
find
コマンドは、以下のオプションを指定して使用します
maxdepth 1
– 再帰的に検索しないtype f
– ファイルを検索しますname
– この名前を検索しますmtime -31
– 31日前に更新されていないファイルを検索します
wc -l
はコマンドによって生成された行数をカウントします。友人が支払っていない場合は0
、友人が支払った場合は1
、touch
コントロールファイルを実行した場合はtouch
となります
このスクリプトは月の日数を計算しておらず、デフォルトは31日となっています
33 VL-80 2014-01-02
求めている以上のものかもしれませんが、バックエンドとしてRADIUSに対して802.1x認証を使用してワイヤレス認証情報を設定することを検討したことはありますか?
RADIUSは、あなたのルームメイトが家賃を支払ったかどうかを確認するために、あなたが望む任意のバリデータ(おそらくスクリプトを作成してデータベースか何かに保存する必要があるでしょう)をチェックするように設定することができます。彼らが認証して支払いを済ませると、RADIUSは彼らを認証します。そうでなければ、それはしません。これの良い点は、MACアドレスのフィルタリングに頼らないことです。そうすれば、技術に精通したルームメイトがいても、あなたが設置したコントロールを簡単に迂回することはできません
14 cloaked1 2014-01-09
あなたの銀行口座またはあなたが使用することができる別のトランザクションソリューション(PayPal?)は、自動支払い通知の任意の方法を提供しているかどうかを確認してください
- トランザクションごとのメール通知
- 日々の取引のまとめメール
- いくつかのまともな API
そのような方法があれば、残っているのは、支払いを監視するいくつかの簡単なスクリプトを書くことだけです。あなたの友人からの毎月の支払いを求めている銀行からのメールを解析するだけかもしれません。あなたは、各友人の口座番号またはID、支払うための合計(また、グローバル定数かもしれません)とMACアドレスを格納する設定ファイルが必要になります
スクリプトは、毎月の支払い状況に応じてファイアウォールのエントリを調整します
その後、利用可能な支払い方法を友人に知らせ、ファイアウォールを設定しながら、3日間の猶予期間を逃した場合でも支払いができるように、友人に支払いメカニズムへのアクセスを提供することを忘れないでください。)
1 Michał Sacharewicz 2014-01-14