|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
单位用coyote做路由上网,可是在上班时间老是有很多人疯狂地用bt、迅雷、emule下载,严重影响了正常的工作。本来有iptables的time模块的,可是我试了下,time模块居然不支持在POSTROUTING链中作限制。所以花了点儿时间,写了段c程序,用以控制使用p2p的时间。这段程序的作用就是设置早7点至晚23点禁止p2p下载,其余时间则则允许。本程序只能精确到小时,期待有人改进下,可以精确到分钟。这段程序可以在任何linux机器上编译通过,编译命令为:
gcc time.c -o timeset
time.c的源码如下:
- #include ;
- #include ;
- void start_bt(int ii)
- {
- if (ii == 1)
- {
- system("/etc/start.sh");
- }
- else
- ;
- }
-
- void stop_bt(int ii)
- {
- if (ii == 0)
- {
- system("/etc/stop.sh");
- }
- else
- ;
- }
- main()
- {
- time_t timep;
- struct tm *p;
- time(&timep);
- int start,stop,i;
- start = 23;
- stop = 7;
- p=localtime(&timep);
- if (p->tm_hour tm_hour >= start)
- i = 1;
- else
- i = 0;
- while(1)
- {
- time(&timep);
- p=localtime(&timep); /*取得当地时间*/
- if (p->tm_hour tm_hour >= start)
- {
- start_bt(i);
- i=0;
- }
- else
- {
- stop_bt(i);
- i=1;
- }
- sleep(60);
- }
- }
复制代码
原理:在给定的时间范围内调用shell脚本,两个脚本在/etc目录中,内容如下
stop.sh
#!/bin/sh
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j DROP
iptables -t mangle -A POSTROUTING -m layer7 --l7proto xunlei -j DROP
iptables -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -j DROP
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bitcomet -j DROP
start.sh
#!/bin/sh
iptables -t mangle -D POSTROUTING -m layer7 --l7proto bittorrent -j DROP
iptables -t mangle -D POSTROUTING -m layer7 --l7proto xunlei -j DROP
iptables -t mangle -D POSTROUTING -m layer7 --l7proto edonkey -j DROP
iptables -t mangle -D POSTROUTING -m layer7 --l7proto bitcomet -j DROP
使用方法:
直接运行编译出来的timeset程序,命令行:
timeset &
本来应当它把做成守护进程运行的,但因初学C,有很多不明白,请大家莫笑。 |
|