首页 > 系统相关 >Linux下端口连通性测试

Linux下端口连通性测试

时间:2024-11-28 16:22:20浏览次数:6  
标签:连通性 IP 端口 dev echo 测试 Linux PORT

端口连通性测试

  • 使用nc命令
  • Linux下自带/dev/tcp命令
#!/bin/bash

#检测脚本传入的参数
if [ $# -eq 0 ]; then
    echo "使用格式: $0 <IP PORT> | -f <file>"
    echo "  <IP PORT>      测试单个IP和端口"
    echo "  -f <file>      批量测试,使用参数-f 指定要测试的文件,每行IP PORT以空格形式"
    exit 1
fi

#记录脚本启动时间
start_time=$(date +%s)

#变量
NC="nc"
TELNET="telnet"

#判断命令nc telnet命令是否存在
check_command(){
	comm_name=$1
	command -v $comm_name > /dev/null
}

#NC 端口连接测试
nc_test_port(){
	IP=$1
	PORT=$2
	nc -z -v -w 3 $IP $PORT &> /dev/null
	if [ $? -eq 0 ]; then
		echo -e "\e[32m $IP $PORT 端口测试可用\e[0m" 
	else
		echo "$IP $PORT 端口测试不可用"
	fi
}

#TELNET 端口连接测试 实际使用/dev/tcp
telnet_test_port(){
	IP=$1
	PORT=$2
	#telnet  $IP $PORT &> /dev/null
	(echo > /dev/tcp/$IP/$PORT) &> /dev/null
	if [ $? -eq 0 ]; then
		echo -e "\e[32m $IP $PORT 端口测试可用\e[0m" 
	else
		echo "$IP $PORT 端口测试不可用"
	fi
	
}


#传入单个IP和端口形式
if [ "$1" != "-f" ]; then
	check_command $NC
	if [ $? -eq 0 ]; then
		IFS=" " read -r IP PORT <<< "$1"
		if [ -z "$IP" ] || [ -z "$PORT" ]; then
			echo "格式不正确,例如:192.168.1.1 22"
			exit 1
		fi
	        nc_test_port $IP $PORT
	else
	        echo "$NC 命令不存在,测试$TELNET命令"
		check_command $TELNET
		if [ $? -eq 0 ]; then
			
			IFS=" " read -r IP PORT <<< "$1"
			if [ -z $IP ] || [ -z $PORT ]; then
				echo "格式不正确,例如:192.168.1.1 22"
				exit 1
			fi
	        	telnet_test_port $IP $PORT
		else
			echo "$TELNET 命令不存在"
		fi
	fi
else
	#判断文件是否存在
	FILE=$2
	if [ ! -f "$FILE" ]; then
		echo "文件找不到,请重新指定!"
		exit 1
	fi
	
	#处理文本,逐行读取并测试端口连通性
	while IFS=" " read -r IP PORT;
	do
		if [ -n "$IP" ] && [ -n "$PORT" ]; then
			check_command $NC
			if [ $? -eq 0 ]; then
				nc_test_port $IP $PORT
			else
				telnet_test_port $IP $PORT
			fi
		fi
	done <"$FILE"
	
fi

#结束时间
end_time=$(date +%s)
use_time=$((end_time - start_time))


echo -e "\n执行共用时:$use_time 秒!"

标签:连通性,IP,端口,dev,echo,测试,Linux,PORT
From: https://www.cnblogs.com/sharecorner/p/18574489

相关文章

  • Q:CRON表达式,Linux和Java的不同写法
    CRON表达式是一个字符串,包含五个到七个由空格分隔的字段(每种软件不一样),表示一组时间,通常作为执行某个程序的时间表。调度精度:Linux的cron调度精度为分钟级别,最小粒度为分钟,而Java中的Quartz框架可以支持秒级别的调用。灵活性:Quartz框架提供了丰富的调度功能,可以支持一些复......
  • 【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换
    ......
  • [Linux]文件系统
    文件系统在理解文件系统之前,我们先来看一下关于磁盘方面的内容。磁盘的存储结构盘面:一个磁盘由多个盘片组成,每个盘片都由两面,它的每一个面都可以存储数据,这就是盘面。磁道:在一个盘面上会被划分为一个一个的“圈”,这个“圈”就对应这一个个的磁道。扇区:从盘面中心......
  • 【应急响应】Linux 计划任务与 DFIR 排查实践(二)
    #linux应急响应at服务#cron服务#隐藏任务......
  • Linux系统自定义服务使用system方式启动步骤
    确定启动的名字,如orzs#启动服务路径/etc/systemd/system/orzs.service 使用systemd启动服务文件所在路径/opt/orzs/start_orzs文件配置文件路径和工作目录#服务工作目录/opt/orzs/#配置文件目录/opt/orzs/etc/文件软连#软连ln-s/opt/orzs/start_orzs/usr......
  • 腾讯通RTX最佳升级替代方案,支持移动端及Linux系统
    一、腾讯通RTX停更后用户面临的主要问题腾讯通RTX停止更新及下架官网后,用户无法再获得技术支持、版本更新和资源下载,这直接导致以下关键问题无法得到有效解决:●不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac平台,无法在国产Linux内核系统(如统信UOS、银河麒麟)以及移动端正......
  • linux嵌入式开发板推荐(附学习资料)
    嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,由于人才的缺乏,企业对于嵌入式工程师的需求量增大,薪资水平也较为可观。很多人选择嵌入式行业但不知道怎么入门,学习嵌入式,开发板是最离不开的了,今天华清的资深程序员就来给大家分享如何选择嵌入式开发板。 对于嵌入......
  • 你有在linux下编程过吗?有使用过mac系统吗?说下它和win系统的区别?
    针对开发,Linux、macOS和Windows系统的主要区别如下:Linux(通常指各种发行版,如Ubuntu,Fedora,Debian等):优点:强大的命令行界面:非常适合自动化任务、版本控制和服务器管理,对前端工作流效率提升很大。开源和高度可定制:可以根据需要调整系统,安装各种开发工具和库......
  • 默认端口号大全
    目录​编辑Web服务文件传输服务邮件服务域名解析服务数据库服务其他常见服务网络安全与防火墙远程协作与会议实时消息与聊天服务备份与恢复开发与版本控制容器与编排云服务与AP1缓存与CDN服务远程管理与监控网络发现与扫描虚拟化与云管理平台实时流媒体与......
  • linux内存管理
    内存管理是操作系统中一个至关重要的部分,尤其是在Linux系统中。有效的内存管理可以显著提高系统的性能和稳定性。以下是对Linux内存管理的详细介绍,包括内存管理的基本概念、内存分配和回收机制、虚拟内存、页表、内存映射、交换空间等方面的内容。1.内存管理概述1.1内存类......