- 制作一个bash脚本,它添加了限制性iptables规则。
- 将此脚本放入每月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进行计算。