网络连通性批量检测工具

一、背景介绍

  企业网络安全防护中,都会要求配置物理网络防火墙以及主机防火墙,加强对网络安全的防护。云改数转之际,多系统上云过程中都会申请开通大量各类网络配置,针对这些复杂且庞大的网络策略开通配置,那么在网络配置前、后会有一些痛点:

   1、策略配置前,针对无需处理的策略(源和目的网络已经联通),没有手段提前批量探测一下,不仅工作量增加,经常导致策略重复添加。

   2、策略配置后,运维人员处理完成,不能及时便捷的探测网络连通性,无法及时验证开通效果,给业务上云工作带来很大的困扰,急需一个便利的批量端口探测工具。

   3、telnet作为网络端口连通性探测工具,针对已开通防火墙网络权限的探测会很快返回,但对于网络不通的,会等待60s才能超时返回,效率太低。

二、工具描述

1、针对telnet自身短板(网络超时需要60s返回结果),用c语言重新编译telnet,加入超时闹钟alarm自定义设置(目前设置5s超时返回),大大提升探测效率,对应工具名“telnetplus”

2、针对业务申请的一对多、多对多和多对一各种的网络策略,规定策略内容填写梳理成一条一条IP+PORT记录,格式为1.1.1.1|22(IP|PORT) ,对应文件名“telnet.list”

3、通过调用telnetplus命令,遍历IP+PORT,并将结果进行分类汇总,输出到指定文件,程序名“telnetconn.sh”

三、实现过程

1、telnet改版的工具,已放到下载资源中

https://download.csdn.net/download/vincent0920/88689118

2、将telnetplus命令文件拷贝到/usr/bin目录下

3、将telnetconn.sh和telnet.list拷贝到同一个目录下面

telnet.list

#hosts
192.168.163.6|22
192.168.163.7|22
192.168.163.8|1521
192.168.163.9|22
192.168.163.10|3306
192.168.163.134|3306

 telnetconn.sh

#!/bin/bash
#########################Detail#############################
# 1. This shell is used to check destnation ip + port can  #
#  connect usually.                                        #
# 2. Three result file will be created: telnet_succ.log &  #
#  telnet_fail.log & telnet_tmout.log                      #
# 3. Input file telnet_list.txt's format: 10.10.10.10|22   #                                
############################################################RESDIR=result
TELNET_LIST=$1
TMOUT=5###check result dir exist###
if [ ! -d $RESDIR ];thenmkdir $RESDIR
fi###bak result file###
mv $RESDIR/telnetfull_result.log $RESDIR/telnetfull_result.log`date +%Y%m%d`
mv $RESDIR/telnet_result.log $RESDIR/telnet_result.log`date +%Y%m%d`
mv $RESDIR/telnet_fail.log $RESDIR/telnet_fail.log`date +%Y%m%d`
mv $RESDIR/telnet_succ.log $RESDIR/telnet_succ.log`date +%Y%m%d`
mv $RESDIR/telnet_tmout.log $RESDIR/telnet_tmout.log`date +%Y%m%d`
mv $RESDIR/telnet_refused.log $RESDIR/telnet_refused.log`date +%Y%m%d`
touch $RESDIR/telnet_result.log
touch $RESDIR/telnetfull_result.log
touch $RESDIR/telnet_fail.log
touch $RESDIR/telnet_succ.log
touch $RESDIR/telnet_tmout.log
touch $RESDIR/telnet_refused.log###begin telnetfull###
for line in `cat $TELNET_LIST |grep -v ^# |grep -v ^$ `
do###get remote ip#########ip=`echo $line | awk 'BEGIN{FS="|"} {print $1}'` ###get remote port####### port=`echo $line | awk 'BEGIN{FS="|"} {print $2}'`###get local ip##########local_ip=`ifconfig | grep "134." | awk '{print $2}' | tr -d "addr:"`###begin telnet###telnetfull $ip $port $TMOUT >> $RESDIR/telnetfull_result.log###find succ record into telnet_succ.log#####res=`tail -1 $RESDIR/telnetfull_result.log|awk '{print $5}'`if [ $res = failed ];thennohup telnet $ip $port >> $RESDIR/telnet_result.log  2>&1nohup telnet $ip $port > $RESDIR/telnet_tmp.log  2>&1resf=`grep telnet $RESDIR/telnet_tmp.log|awk '{print $7}'`echo $resfif [ $resf = refused ];thenecho "local_ip:$local_ip  remote_ip:$ip | $port | refused" >> $RESDIR/telnet_refused.log elseecho "local_ip:$local_ip  remote_ip:$ip | $port | No route to host" >> $RESDIR/telnet_fail.logfielif [ $res = success ];thenecho "local_ip:$local_ip  remote_ip:$ip | $port | success" >> $RESDIR/telnet_succ.logelif [ $res = timeout ];thenecho "local_ip:$local_ip  remote_ip:$ip | $port | timeout" >> $RESDIR/telnet_tmout.log fidone   

 4、执行命令sh telnetconn.sh telnet.list

执行结束后,在result子目录下面生成七个结果文档:

最后检查telnetfull_result.log:所有telnet遍历结果

最后,如果觉得本文对你有帮助,欢迎点赞、收藏、评论!

There are many things that can not be broken!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Go语言实现RESTful API

RESTful架构是一种设计风格,用于构建网络应用程序的API。它基于HTTP协议,并使用不同的HTTP方法(如GET、POST、PUT、DELETE等)来处理不同的操作。在Go语言中,我们可以使用标准库中的net/http包来实现RESTful API。 下面…

【Axure高保真原型】树形表格_多选效果

今天和大家分享树形表格_多选效果的原型模板,点击树的箭头可以展开或者收起子节点,点击多选按钮可以选中或取消选择该行以及子级行内容,同时反选父级行内容,父级行内容能根据子级选中的数量自动反选,包括全选、半选和未…

SpringBoot学习(三)-整合JDBC、Druid、MyBatis

注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!! 一、整合JDBC使用(理解) 创建项目 勾选依赖启动器 查看依赖 …

Electron介绍

前言 相信很多的前端小伙伴都想过一个问题,web技术是否可以用于开发桌面应用。答案当然是可以的,Electron框架就是其中的一种解决方案。 Electron介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 并不是一门新的…

FreeRTOS——互斥信号量知识总结及其实战

1互斥信号量的概念 1)互斥信号量:是一个拥有优先级继承的二值信号量,在同步的应用中二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中! 2)优先级继承:当一个互斥信号量正在被一个低优先级的…

python统计分析——直方图(df.hist)

使用dataframe.hist()或series.hist()函数绘制直方图 import numpy as np import pandas as pd from matplotlib import pyplot as plt.dfpd.DataFrame(data{type:[A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B],value:[2,3,3,4,4,4,4,5,5,6,5,6,6,7,7,7,7,8,8,9] }) serpd.Serie…

conda虚拟环境搭建和打包,删除,移动等全流程及相关问题汇总

私人笔记无偿分享,更多内容请访问:链接:https://pan.baidu.com/s/19mS5N9XJ_AotF20kUwSA3w?pwdp5kx 提取码:p5kx 复制这段内容后打开百度网盘手机App,操作更方便哦 4.4. anaconda虚拟环境搭建: 网址&am…

Java中的SPI机制

Java中的SPI(Service Provider Interface)机制是一种服务发现机制。它允许服务提供者在运行时被发现和加载,而不是在编译时。这种机制主要用于实现解耦,使得接口的定义与实现可以独立变化,增强了系统的可扩展性和可替换…

[PyTorch][chapter 9][李宏毅深度学习][CNN]

前言: 卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家Yann LeCun,目前在Facebook工作,…

小样本学习介绍(超详细)

小样本学习介绍 本文首先介绍了什么是小样本学习,其次介绍了为什么小样本学习的很多文章都采用元学习的方法。目的是通过通俗的解释更加清楚的介绍小样本学习是什么,适合初学者的入门。当然,以下更多的是自己的思考,欢迎交流。 …

莫比乌斯函数

积性函数定义 若gcd(p,q)1,有f(p*q)f(p)*f(q),则f(x)是积性函数 其中规定f(1)1,对于积性函数有:所有的积性函数都可以用筛法求出 常见的积性函数有欧拉函数和莫比乌斯函数 筛法求莫比乌斯函数 const int N 1e9 5; const int …

用开源大语言模型开发的智能对话机器人初版原型验证

用开源大语言模型开发的智能对话机器人初版原型验证 0. 背景1. 初版检证效果展示2. 验证效果总结 0. 背景 同事要想做一个智能对话机器人,特别的需求有有些几点, 通过预置提示词(包括确认事项),让大语言模型用会话式…

OpenAI ChatGPT-4开发笔记2024-02:Chat之text completion

API而已 大模型封装在库里,库放在服务器上,服务器放在微软的云上。我们能做的,仅仅是通过API这个小小的缝隙,窥探ai的奥妙。从程序员的角度而言,水平的高低,就体现在对openai的这几个api的理解程度上。 申…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI (一)elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串,才会显示默认选中对应中文,如果是数字,则显示数字,修改为: handleOpenAddDialog() {this.dialogT…

vue-动态高亮效果

个人练习&#xff0c;仅供参考 实现如下效果&#xff1a;点击某块&#xff0c;某块变成其他颜色。 具体实现代码&#xff1a; 上边&#xff1a; <template><div><h3 style"color: #f69">动态高亮效果</h3><hr> <!-- 对象 -->…

SwiftUI之深入解析如何使用新地图框架MapKit

一、前言 一旦将 App 目标更新到 iOS 17&#xff0c;Xcode 会将任何使用旧的 Map 初始化器的用法标记为已弃用&#xff1a; 会有警告提示&#xff1a;init coordinate region 已在 iOS 17 中弃用。请改用带有 MapContentBuilder 参数的地图初始化器。在 iOS 17 中&#xff0c;…

Java-replaceAll()同时替换多个字符

今天复现了raplaceAll&#xff08;&#xff09;的用法&#xff0c;但是通常都是对一种字符进行替换&#xff0c;我就在想有没有操作可以一次性替换多个不同的字符&#xff0c;百度一搜&#xff0c;果然有。具体情况如下 首先是替换字的 String str1 "小明&#xff0c;小…

案例091:基于微信小程序的农场驿站平台的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Redis (三)

1、redis复制 简单的概括就是主从复制&#xff0c;master以写为主&#xff0c;Slave以读为主&#xff0c;当master数据发生变化的时候&#xff0c;自动将更新的数据异步同步到其他的slave是数据库。 使用这种机制的话&#xff0c;可以做到读写分离&#xff0c;可以减轻主机负担…