当前位置: 首页 > news >正文

python脚本 限制 外部访问 linux服务器端口

注意:该脚本会清空linux防火墙的filter表的规则和用户自定义链路

脚本的效果是将端口限制为仅服务器内部访问 

可以提供ip地址白名单

具体脚本:

#!/usr/bin/python3
import argparse, subprocess, sys, redef popen(cmd):global resulttry:result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8', check=True)except Exception as e:raise Exception(e.stderr)file_count = result.stdout.strip()  # 假设grep -c 的输出只有一行且没有额外的空格或换行符return file_countdef assignment():parser = argparse.ArgumentParser(description='manual to this script')parser.add_argument("--ip_white_list", type=str, default="")parser.add_argument("--port_list", type=str, default="")args = parser.parse_args()ip_white_list = args.ip_white_listport_list = args.port_listif not port_list :raise Exception("--port_list不能为空")ip_white_list = f'{ip_white_list},'.split(",")port_list = f'{port_list},'.split(",")ip_white_list = set(filter(lambda x:x!='',ip_white_list))port_list = set(filter(lambda x:x!='',port_list))for port in port_list:if re.search(r"[^0-9]", port):raise Exception("--port_list 不是合法的端口")passif ip_white_list :for ip_white in ip_white_list:if re.search(r"[^0-9.]", ip_white):raise Exception("--ip_white_list 不是合法的ip地址")passreturn ip_white_list, port_listdef clear_iptables_rule():popen("iptables -F ")popen("iptables -X ")passdef ip_white(ip_white_list, port_list):popen("iptables -t filter -P INPUT ACCEPT")popen("iptables -t filter -P OUTPUT ACCEPT")popen("iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT")popen("iptables -A INPUT -p tcp -s $(ip r g  1|cut -d ' ' -f 7) -j ACCEPT")if ip_white_list:for ip in ip_white_list:for port in port_list:popen(f"iptables -A INPUT -p tcp -s {ip} --dport {port} -j ACCEPT")def port_disables(port_list):if port_list:for port in port_list:popen(f"iptables -A INPUT -p tcp --dport {port} -j REJECT ")passdef clear_script():popen(f"echo '' > {sys.argv[0]}")passif __name__ == "__main__":ip_white_list, port_list = assignment()clear_iptables_rule()ip_white(ip_white_list, port_list)port_disables(port_list)clear_script()pass

执行脚本示例选项

./ta  --port_list 8081,8080 --ip_white_list 192.168.0.1,120.0.0.2

相关文章:

python脚本 限制 外部访问 linux服务器端口

注意:该脚本会清空linux防火墙的filter表的规则和用户自定义链路 脚本的效果是将端口限制为仅服务器内部访问 可以提供ip地址白名单 具体脚本: #!/usr/bin/python3 import argparse, subprocess, sys, redef popen(cmd):global resulttry:result su…...

Redis-哨兵模式-主机宕机-推选新主机的过程

文章目录 1、为哨兵模式准备配置文件2、启动哨兵3、主机6379宕机3.4、查看sentinel控制台日志3.5、查看6380主从信息 4、复活63794.1、再次查看sentinel控制台日志 1、为哨兵模式准备配置文件 [rootlocalhost redis]# ll 总用量 244 drwxr-xr-x. 2 root root 150 12月 6 2…...

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发 码客 卢益贵 ygluu 关键词:AI(AIGC、ChatGPT、文心一言)、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…...

每日一练 - OSPF 组播地址

01 真题题目 判断以下陈述是否正确: 224.0.0.6 是 ALL DRouters 监听地址 224.0.0.5 是 ALL SPFRouters 监听地址 A.正确 B.错误 02 真题答案 A 03 答案解析 在OSPF (Open Shortest Path First) 路由协议中,为了实现高效的信息交换和发现邻居&#x…...

AMHS工程师的培养

一、岗位职责主要包括: 1. 负责生产现场设备运行维护及异常处理,确保设备安全操作与保养。 2. 制定并实施AMHS计划和措施,对过程问题进行追踪解决。 3. 监控生产过程中的不良品率,确保生产过程的稳定性。 4. 建立AMHS标准作业程序文件,并定期更新和维护。 5. 负责AMHS…...

如何在前端项目中制定代码注释规范

本文是前端代码规范系列文章,将涵盖前端领域各方面规范整理,其他完整文章可前往主页查阅~ 开始之前,介绍一下​最近很火的开源技术,低代码。 作为一种软件开发技术逐渐进入了人们的视角里,它利用自身独特的优势占领市…...

一位苹果手机硬件工程师繁忙的一天

早晨:迎接新的一天 7:00 AM - 起床 早晨七点准时起床。洗漱、吃早餐后,查看手机上的邮件和消息,以便提前了解今天的工作安排和优先事项。 7:30 AM - 前往公司 开车前往位于加州库比蒂诺的苹果总部。在车上习惯性地听一些与电子工程相关的播…...

Python | 使用均值编码(MeanEncoding)处理分类特征

在特征工程中,将分类特征转换为数字特征的任务称为编码。 有多种方法来处理分类特征,如OneHotEncoding和LabelEncoding,FrequencyEncoding或通过其计数替换分类特征。同样,我们可以使用均值编码(MeanEncoding)。 均值编码 均值…...

面试-java异常体系

1.java异常体系 error类是指与jvm相关的问题。如系统崩溃,虚拟机错误,内存空间不足。 非runtime异常不处理,程序就没有办法执行。 一旦遇到异常抛出,后面的异常就不会进行。 (1)常见的error以及exception 2.java异常要点分析…...

Clickhouse 的性能优化实践总结

文章目录 前言性能优化的原则数据结构优化内存优化磁盘优化网络优化CPU优化查询优化数据迁移优化 前言 ClickHouse是一个性能很强的OLAP数据库,性能强是建立在专业运维之上的,需要专业运维人员依据不同的业务需求对ClickHouse进行有针对性的优化。同一批…...

变工况下转子、轴承数据采集及测试

1.固定工况下的数据采集 1.wireshark抓包 通过使用 Wireshark 抓包和 Linux 端口重放技术,可以模拟实际机械设备的运行环境,从而减少实地验证软件和算法的复杂性和麻烦。 打开设备正常运转,当采集器通过网口将数据发送到电脑时&#xff0c…...

泰迪智能科技与成都文理学院人工智能与大数据学院开展校企合作交流

近日,在推动高等教育与产业深度融合的背景下,成都文理学院人工智能与大数据学院携手广东泰迪智能科技股份有限公司开展“专业建设交流会”。人工智能与大数据学院院长胡念青、院长助理陈坚、骨干教师刘超超、孙沛、赵杰、文运、胡斌、邹杰出席本次交流会…...

ubuntu22.04安装初始化

目录 1. 概述2. 修改参数3. 修改限制4. 修改源6. 虚拟机关闭swap分区7. 配置系统信息7.1 设置主机名7.2 设置时区7.3 安装常用工具包7.4 设置时间同步7.5 关闭 selinux 1. 概述 CentOS 7 马上就停止支持服务了,未雨绸缪,整理Ubuntu 22.04的 初始化脚本。…...

学习新语言方法总结(一)

随着工作时间越长,单一语言越来越难找工作了,需要不停地学习新语言来适应,总结一下自己学习新语言的方法,这次以GO为例,原来主语言是PHP ,自学GO 了解语言特性,知道他是干嘛的 go语言&#xff0…...

Mysql数据的备份与恢复

一.备份概述 备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。 1.数据备份的重要性 在企业中数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重&…...

规上!西安市支持培育商贸企业达限纳统应统尽统申报奖励补助要求政策

西安市支持培育商贸企业达限纳统应统尽统工作方案 为加快培育消费市场主体,支持商贸企业扩大经营、做大做强,指导企业达限纳统、应统尽统,不断扩大我市限额以上商贸企业数量规模,促进全市经济社会高质量发展,结合我市…...

Go语言测试第二弹——基准测试

在前一篇文章中,我们讲解了Go语言中最基础的单元测试,还没有看过的可以自行去查看,这篇文章我们详细了解Go语言里面的基准测试。 基准测试 基准测试,也就是BenchmarkTest,基准测试是用来测试代码性能的的一种方法&…...

关于“刘亦菲为什么无人敢娶”的问题❗❗❗

关于“刘亦菲为什么无人敢娶”的问题, 实际上涉及到多个方面的因素, 以下是对这些因素的详细分析:1.事业心重:刘亦菲作为华语影视圈的知名女星,她的演艺事业非常成功, 这也意味着她将大量的时间和精力投…...

LeetCode:经典题之141、142 题解及延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 …...

rk3568 OpenHarmony 串口uart与电脑通讯开发案例

一、需求描述: rk3568开发板运行OpenHarmony4.0,通过开发板上的uart串口与电脑进行通讯,相互收发字符串。 二、案例展示 1、开发环境: (1)rk3568开发板 (2)系统:OpenHar…...

canvas画布旋转问题

先说一下为什么要旋转的目的:因为在画布上签名,在不同的设备上我需要不同方向的签名图片,电脑是横屏,手机就是竖屏,所以需要把手机的签名旋转270,因此写了这个方法。 关于画布旋转的重点就是获取到你的画布…...

vue3 【提效】自动导入框架方法 unplugin-auto-import 实用教程

是否还在为每次都需要导入框架方法而烦恼呢? // 每次都需手动导入框架方法 import { ref } from vuelet num ref(0)用 unplugin-auto-import 来帮你吧,以后只需这样写就行啦! let num ref(0)官方示例如下图 使用流程 1. 安装 unplugin-au…...

clip系列改进Lseg、 group ViT、ViLD、Glip

Lseg 在clip后面加一个分割head,然后用分割数据集有监督训练。textencoder使用clip,frozen住。 group ViT 与Lseg不同,借鉴了clip做了真正的无监督学习。 具体的通过group block来做的。使用学习的N个group token(可以理解为聚类…...

Ubuntu下TensorRT与trtexec工具的安装

新版(这里测试的是10.1版)的onnx转tensorrt engine工具trtexec已经集成在TensorRT中,不需要额外单独安装。 教程来源于此网页:https://medium.com/moshiur.faisal01/install-tensorrt-with-command-line-wrapper-trtexec-on-unun…...

MySQL定时任务

事件调度器操作 查看事件调度器是否开启:ON 表示已开启。 show variables like %event_scheduler%; ------------------------ | Variable_name | Value | ------------------------ | event_scheduler | ON | ------------------------ 开启和关闭事件调度器…...

Pandas实用Excel数据汇总

Pandas 是一个开源的 Python 库,由 Wes McKinney 开发,专门用于高效地处理和分析数据,无论是小规模的数据实验还是大规模的数据处理任务。它构建在 NumPy 之上,这意味着它利用了 NumPy 的高性能数组计算能力。Pandas 的核心数据结…...

【计算机网络】[第4章 网络层][自用]

1 概述 (1)因特网使用的TCP/IP协议体系(四层)的网际层,提供的是无连接、不可靠的数据报服务; (2)ATM、帧中继、X.25的OSI体系(七层)中的网络层,提供的是面向连接的、可靠的虚电路服务。 (3)路由选择分两种: 一种是由用户or管理员人工进行配置(只适用于规…...

Unity3D Entity_CacheService实现详解

Unity3D是一款广泛使用的游戏开发引擎,它提供了丰富的功能和工具来帮助开发者创建高质量的游戏和互动体验。在Unity开发过程中,资源管理是一个重要的环节,特别是当项目规模逐渐增大,资源数量变多时。为了优化资源的加载和管理&…...

DLMS/COSEM协议—(Green-Book)Gateway protocol

DLMS/COSEM协议 — Gateway protocol 10.10 Gateway protocol (网关协议)10.10.1 概述10.10.2 网关协议 (The gateway protocol)10.10.3 HES在WAN/NN中作为发起者(拉取操作)10.10.4 LAN中的终端设备作为发起…...

Android高级面试_12_项目经验梳理

Android 高级面试-1:Handler 相关 问题:Handler 实现机制(很多细节需要关注:如线程如何建立和退出消息循环等等) 问题:关于 Handler,在任何地方 new Handler 都是什么线程下? 问题&#xff1a…...

网站开发常用工具/百度怎么创建自己的网站

SQLServer 中的存储过程中判断临时表是否存在,存在则删除临时表 1 2 3 4 5 6 7 8 9 10 IF OBJECT_ID(TEMPDB..#BCROSSREFERENCE ) IS NOT NULL DROP TABLE #BCROSSREFERENCE IF OBJECT_ID(TEMPDB..#SCVTMP_BCUSTOMER) IS NOT NULL DROP TABLE #SCVTMP_BCUSTOMER IF…...

做网站大概要多/太原网站关键词排名

int main(int argc, const char * argv[]) {//sizeof/*sizeof(数据类型)此运算符功能:返回值就是该数据类型所占的字节数。sizeof(变量名)此运算符功能:返回值就是该变量所占的字节数。*/int arr[]{3,4,5,6,7,6,8,42,9};int* p1 &arr[0];int a siz…...

买了域名如何做网站/seo优化教程自学

2019独角兽企业重金招聘Python工程师标准>>> select (case when instr (x,a)>0 or instr (x,b)>0 or instr (x,c)>0 then 1 else 0 end) from r 转载于:https://my.oschina.net/youfen/blog/1934809...

重庆网红打卡点有哪些地方/seo网址超级外链工具

lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧。 lftp连接的几种方法,最常用的是lftp namesite,这样可以不用明文输入密码。 1、lf…...

社区教育网站建设项目计划书/如何在百度发布信息

DX11进行不动了,师兄让我继续进行DX9,DX9的DX9地形这本书应该不错,结合了SHADER和地形引擎,虽然很早买了,但是当时不懂SHADER,所以没看懂,OSGEARTH视频教程和软引擎也要继续进行。太多了也进行不…...

wordpress欢迎页面模板下载/抖音关键词搜索排名

目录 一、put()方法的作用和执行流程 二、put()和putVal()源码 2.1 实现为空的方法 2.2 treeifyBin()方法 三、对比JDK1.7的put()方法源码 3.1 JDK1.7的put()方法执行流程 3.2 JDK1.7的put()方法源码 3.3 jdk1.7和jdk1.8的区别 一、put()方法的作用和执行流程 HashMap 只提供了…...