服务器访问控制——基于组网结构前端有防火墙,服务器都在防火墙内,内部使用内网ip的架构

#!/usr/bin/env python#-*- coding: utf-8 -*-‘‘‘Create date: 2018-10-17Last update:Version: 1.0Description:登陆限制需求:             X.X网段不允许访问外网             root用户登陆可以访问外网             root用户登陆情况下普通用户无法禁止访问外网,除非root用户也不访问外网             普通用户登陆不允许访问外网             普通用户可以申请一段时间访问外网Usage method:放入crontab中自定义执行间隔,不给参数时,除非root用户登陆,否则不允许自行访问外网,              可以传递1个参数,必须是数字,可以是浮点数,表示普通用户可以访问外网的时间,单位为小时。Author: Yefei‘‘‘import psutilimport osimport sysimport datetime

#网关ip地址设定GW_IP="10.0.3.1"#路由列表为list类型。routList = []

#删除网关函数def delGateWay():  CMD = ‘route del default gw %s‘%(GW_IP)  os.popen(CMD)#添加网关函数def addGateWay():  CMD = ‘route add default gw %s‘%(GW_IP)  os.popen(CMD)#检查网关是否存在def gateWayCheck():  flag = False  for line in routList:    if GW_IP in line:      flag = True      return flag#检查用户是否是rootdef userCheck():  flag = False  for User in userList:    if User.name == "root":      print("用户是root")      flag = True      return flag#网关添加def userOnline(flag):  print(flag)  if flag:    print("检测网关已存在,退出程序")    sys.exit()  else:    print("添加网关")    addGateWay()#网关删除def userOffline(flag):  if flag:    print("检测网关已存在,删除网关")    delGateWay()  else:    print("检测网关不存在,退出程序")    sys.exit()#将普通用户访问外网的时间节点写入文件,当到达此事件后去掉网关def FileForTime(scheme,*args):  if scheme == "w":    with open("/root/controltime","w") as recordTime:      now = datetime.datetime.now()      endTime = now + datetime.timedelta(hours=args[0])      endStrTime = endTime.strftime(‘%Y-%m-%d %H:%M:%S‘)      recordTime.write(endStrTime)      if now < endTime:        return True      else:        return False  elif scheme == "r":    with open("/root/controltime","r") as recordTime:      endStrTime = recordTime.readline()      endStrTime = endStrTime.strip()      if len(endStrTime) > 10:        endTime = datetime.datetime.strptime(endStrTime,‘%Y-%m-%d %H:%M:%S‘)        now = datetime.datetime.now()        if now < endTime:          return True        else:          return False      else:        return Falseif __name__ == ‘__main__‘:  routList = os.popen("route -n")  userList = psutil.users()  if len(sys.argv) == 2:    hoursLen = float(sys.argv[1])    print(hoursLen)    if FileForTime(‘w‘,hoursLen):        print("用户可以上网")        userOnline(gateWayCheck())    else:        print("用户不可以上网")        userOffline(gateWayCheck())  else:    if len(userList) > 0 and userCheck():      userOnline(gateWayCheck())    elif os.path.exists("/root/controltime"):      if FileForTime("r"):        userOnline(gateWayCheck())      else:        userOffline(gateWayCheck())    else:        userOffline(gateWayCheck())

原文地址:https://www.cnblogs.com/kcrist/p/9807570.html

时间: 2024-10-28 16:11:56

服务器访问控制——基于组网结构前端有防火墙,服务器都在防火墙内,内部使用内网ip的架构的相关文章

Yii2.0中文开发向导——RBAC(基于角色的访问控制权限)表结构原理分析

这里有几个概念很重要,我简单用大白话说一下;权限:就是指用户是否可以执行哪些操作.如:小张可以发帖.回帖.浏览,小红只能回帖.浏览角色:就是上面说的一组操作的集合.如:高级会员有发帖.回帖.删贴.浏览的权限,普通会员只有回帖.浏览的权限.比如小张是高级会员,那么他就可以执行发帖.回帖.删贴.浏览.而小红是普通会员,所以它就只能回帖.浏览.另外角色还可以继承,中级会员除了普通会员的回帖.浏览功能外,还可以发帖.也就是说在普通会员的基础上又增加了一个发帖的权限.在Yii2.0中 yii\rbac:

构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 javascript 文件.多终端多浏览器同步测试的开发环境,并且还可以通过 piblish 命令对项目下的文件进行打包操作. 相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常

《基于模块化的前端开发框架的研究与实现》 论文阅读(十三)

一.基本信息 标题:基于Web前端的性能优化方案研究 时间:2017 来源:北京邮电大学 关键词:Web前端:模块化:JavaScript:Node.js:前端模板 二.研究内容 1.主要内容: 1.1研究背景与意义当今互.联网飞速发展,网络用户的需求变化既快又大,大部分网站的更新周期都是以日,小时甚至分钟为单位,在这种情况下,网站的前端就成了变化最频繁的部分川.随着互联网公司对前端开发的逐渐重视,前端开发人数也越来越多,但是技术人员的投入总是有限的,而前端开发领城并没有为开发者们提供一-种简洁

基于CentOS 6.5构建KVM服务器平台、网络和存储、公钥和私钥的建立

1.什么是虚拟化通过虚拟化技术将一台计算机虚拟成多台逻辑上的计算机.每个逻辑上的计算机可以安装不同的操作系统,这些系统之间互相独立并且互不干扰2.什么虚拟机一个软件平台,如同一个物理机上面运行操作系统和应用程序3.目前主流的虚拟化产品VMwareMicosoftCitrix RedHat 4.KVM网络设置NAT模式(默认)    KVM虚拟机网卡选择NAT,网关指向HOST主机的内网192.168.1.1,它就可以直接访问外网.路由模式(HOST开启路由转发功能)    HOST主机充当路由器

基于gulp的前端框架开发规范

前端开发及相关规范 - 基于gulp的前端框架开发规范 1.前端开发工具的安装和使用说明 前端开发工具的目录结构 htmlcodeBuilder - v0.9 ├── statics ├── html //静态文件开发 ├── js // 非require引入的js文件 ├── Lib // 第三方JS包 ├── ve_2_1 // ├── css // 样式目录 ├── fonts // bootstrap的图标字体 ├── img // 图片目录 ├── less // less源码 ├──

基于epoll的简单的http服务器

本人用epoll写了一个简单的http服务器,该服务器在客户端第一次发送数据时可以正确处理,但是当客户端不关闭继续发送数据时,服务器无法读取,请求大家帮忙看看哪里有问题,谢谢 </pre></p><p>server.h</p><p><pre name="code" class="cpp">/* * server.h * * Created on: Jun 23, 2014 * Author: f

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756989) 前言:现在很多APP都需要云的功能,也就是通过网络与服务器交换数据.有的采用tcp/ip协议,但是你必须拥有一个固定ip的服务器,可以购买阿里云服务器之类的,就是贵了点.如果只是个人的小应用的的话可以采用新浪云平台这种免费的服务器,采用的协议是http协议,具体实现方式如下: 方式一.在线

基于SWOOLE的分布式SOCKET消息服务器架构

消息服务器使用socket,为避免服务器过载,单台只允许500个socket连接,当一台不够的时候,扩充消息服务器是必然,问题来了,如何让链接在不同消息服务器上的用户可以实现消息发送呢? 要实现消息互通就必须要让这些消息服务器本身能互通,想了两个方式,一种是消息服务器之间交叉链接,另一种是增加一个特殊的消息服务器,这个消息服务器不对外开放,只负责消息转发和推送. 下列测试不考虑防火墙等.仅测试可行性和效率. 测试环境 消息服务器 192.168.0.201 9501 192.168.0.202

基于centos 7搭建Nginx网站服务器(包含虚拟web主机的配置)

Nginx专为性能优化而开发,其最大的优点就是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力,单台物理服务器可支持20000~50000个并发请求,正是如此,大量提供社交网络.新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供web服务,目前中国大陆使用nginx网站用户有:新浪.网易.腾讯,另外知名的微网志Plurk也使用nginx. Nginx是一个很牛的高性能Web和反向代理服务器,它具有有很多非常优越的特性: 高并发连接:官方测试能支撑5万并发连接,在实际生