网络连通性批量检测工具

一、背景介绍

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

   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.hqwc.cn/news/320915.html

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

相关文章

C# 全屏label控件实现的贪吃蛇。

C# 全屏label控件实现的贪吃蛇。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using stat…

鸿蒙(OpenHarmony)系统之智能语音部件(1)

本文重点参考: OpenHarmony/ai_intelligent_voice_framework 一、总体概述 1. 功能简介及架构 智能语音组件包括智能语音服务框架和智能语音驱动,主要实现了语音注册及语音唤醒相关功能。 智能语音组件架构图如下图所示: (1&a…

Go中interface != nil不一定不是nil

摘要: interface{} 值 ! nil不一定不是nil,应使用reflect库判断是否是nil。 测试示例: // todo interface ! nil 不一定 不是nil var value map[string]interface{} reqMap : make(map[string]interface{}) reqMap["key"] valu…

计算机丢失VCRUNTIME140_1.dll怎么办,6个不同方法教你解决问题

一、什么是vcruntime140_1.dll? vcruntime140_1.dll是Visual C Redistributable Packages的一部分,它是Microsoft Visual Studio开发环境中使用的运行时库文件。它包含了许多常用的函数和类,为开发者提供了丰富的功能支持。 二、vcruntime1…

听GPT 讲Rust源代码--compiler(9)

File: rust/compiler/rustc_trait_selection/src/traits/select/mod.rs 在Rust源代码中,rust/compiler/rustc_trait_selection/src/traits/select/mod.rs文件的作用是实现Rust编译器的trait选择器。 首先,让我们逐个介绍这些struct的作用: Se…

小红书12月内容趋势分析

为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出12月月度榜单,从创作者、品牌、热搜词多方面入手,解析月榜数据,为从业者提供参考。 以下为12月部分榜单解析,想要查看更多行业榜单,创作优质内容&am…

走进UI设计的秘密武器!6款软件值得珍藏!

Adobe Photoshop AdobePhotoshop,简称“PS它是一个由Adobesystems开发和发行的图像处理软件。Photoshop主要处理由像素组成的数字图像。使用其大量的编辑和绘图工具,可以有效地编辑图片。PS在图像、图形、文本、视频、出版等方面具有许多功能。 截至20…

SDRAM小项目——SDRAM初始化配置

主要写了SDRAM的初始化模块,注重文档信息的查找,时序图的设计,SDRAM仿真插件的使用。 文档信息: 根据文档说明,SDRAM在使用之前必须先进行初始化 初始化之前要进行100us的延迟,在100us内除了INHIBIT和NOP命…

css sourcemap 源代码映射

vue.config.js css: {// Enable CSS source maps.sourceMap: process.env.NODE_ENV ! production, }重新运行:yarn serve 效果:

在Gradle工程中使用checkstyle来规范你的项目

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项…

【LLM】自主GPT-4:从ChatGPT到AutoGPT、AgentGPT、BabyAGI、HuggingGPT等

LangChain和LlamaIndex集成趋势后,GPT-4的新兴任务自动化和人工智能代理 ChatGPT和LLM技术的出现是革命性的。这些最先进的语言模型席卷了世界,激励开发人员、爱好者和组织探索集成和构建这些尖端模型的创新方法。因此,LangChain和LlamaIndex…

通往人工智能的 Go 之路

Agency 该库旨在为那些希望通过清晰、高效且符合 Go 语言惯例的方法来探索大型语言模型(LLMs)和其他生成式人工智能的开发人员而设计。 特点 纯 Go 语言:快速、轻量级,静态类型,无需涉及 Python 或 JavaScript编写清晰…