zoukankan      html  css  js  c++  java
  • 配置ubunto 流量使用限制 python 实现简单 http server

    很多ubunto 都有流量限制,使用流量。如每天使用200M ,超过了就要提示信息

    原理,在本机 开一个 http 服务, 显示错误信息,哪流量使用完以后,使用 iptables 将 流量转发到 本机的 http 上,

    这样用户浏览器上就会显示出来提示信息。

    用 python 2.7 。如果你是 python3.x 需要修改一下 print

    py_http.py

    #!/usr/bin/python
    #author : ningci dev
    import socket
    import signal
    import errno
    from time import sleep 
    
    def HttpResponse(header,context):
        response = "%s %d
    
    %s
    
    " % (header,len(context),context)
        return response
    
    HOST = "127.0.0.1"
    PORT = 8000
    
    httpheader = '''
    HTTP/1.1 200 OK
    Context-Type: text/html
    Server: Python-Server version 1.0
    Context-Length: '''
    
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.bind((HOST, PORT))
    sock.listen(2)
    
    while 1:
        clientfd,addr = sock.accept()
        print "connect by ",addr
        data = clientfd.recv(1024)
        print data
        clientfd.send(HttpResponse(httpheader,'net works is down !'))
        clientfd.close()
    
    print 'Done'

    可以配置到 rc.d 的自启动中。

    或者 python py_http.py & 这样测试。

    打开浏览器,访问进行测试。

    测试成功了。

    接下来就是配置 iptables 了。

    主要是使用 python 调用 vnstat 流量统计 ,当达到设定的值后,添加 iptables 转发rule。

    转发rule

     # 将 对于 80、443 端口的访问 重定向到 8000 端口 </P><P>
    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to  127.0.0.1:8000
    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 127.0.0.1:8000

    启内核IP转发
    sudo vi /etc/sysctl.conf

    取消掉 net.ipv4.ip_forward=1 这一行的注释
    然后执行
    sudo sysctl -p

  • 相关阅读:
    Nexus OSS 3 搭建 Docker & Git LFS 仓库
    YARN FairScheduler
    k8s基本概念及使用
    k8s 基本使用
    10款非常实用的在线网站原型设计工具
    Spark常见问题及性能调优
    spark常见问题处理
    TensorFlow 基本使用
    c语言数组的操作
    在Android开发中遇到的MediaPlayer问题
  • 原文地址:https://www.cnblogs.com/ningci/p/6781579.html
Copyright © 2011-2022 走看看