- 制限的なiptablesルールを追加するbashスクリプトを作成します。
- このスクリプトを毎月のcronに入れます。
- bashスクリプト内で条件を作成します-ファイル
~/do_not_block_friends
が存在し、その変更時刻が月の期間(stat -c %y filename
)内にある場合-スクリプトを実行しないでください。
- 彼らがあなたに支払いをしたら
touch ~/do_not_block_friends
。
スクリプトが実行do_not_block_friends
され、変更されたことが確認されるため、iptablesコマンドは実行されません。
彼らがあなたに支払わなかった場合-スクリプトはそれらをブロックします。
支払いが完了したら、別の準備されたスクリプトを実行してロックを解除します。
これは詳細な説明はほとんどない一般的な計画ですが、残りの部分を理解するのは難しいとは思いません。
編集:
このようなスクリプトを記述するより簡単な方法を次に示します。
#!/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
、制御ファイルを。
このスクリプトは月の日数を計算せず、デフォルトは31です。商用の課金システムを構築していないので問題ないと思いますが、bashで計算することもできます。