- 制作一个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进行计算。