Linux系统运维脚本:扫描主机上多个端⼝状态

目               录

一、要求

二、解决方案

(一)解决思路

(二)方案

三、脚本程序实现

(一)脚本代码和解释

1、脚本代码

2、代码解释

(二)脚本验证

1、脚本编辑

2、给予执行权限

3、运行脚本,查看效果

四、扩展


一、要求

       一般我们做linux系统中的应用程序,会用到不同的网络端口,有时候一个应用会用到很多端口。比如我们常见的流媒体平台,由于有很多用户会接入进来,所以,用到的接口成千上万都有可能。

        那么,如何查看主机上的所有关心的端口的状态,以便进一步的进行分析、维护呢?

二、解决方案

(一)解决思路

       通过查询指定的端口,若端口能够访问,或者能够跟端口建立连接,说明端口是处于开放的状态,否则,端口是关闭的。

(二)方案

       (1)配置需要了解的所有端口;

       (2) 遍历每个端口,查看端口是否可用?

       (3)若端口可用,打印端口是开放的;否则,打印出信息:端口是关闭的。

三、脚本程序实现

        直接把脚本写出来,分享给大家。

(一)脚本代码和解释

1、脚本代码

        由于我的环境是centos7.9,编写如下bash代码,可以在centos7及其以后版本运行,如下:

#!/bin/bash
HOST=$1
PORTS="22 25 80 3306 8080 26088 26089"
for PORT in $PORTS; do(nc -z -w5 $HOST $PORT) &> /dev/nullif [ $? -eq 0 ]; thenecho "$PORT is opening....."elseecho "$PORT close"fi
done

2、代码解释

         脚本的功能是检查指定主机上的多个端口是否开放。 解释如下:

(1)HOST=$1

        这行代码将脚本的第一个参数($1)赋值给变量 HOST。当你运行这个脚本时,你需要提供一个主机名或 IP 地址作为参数。

(2)PORTS="22 25 80 3306 8080 26088 26089"

        这行代码定义了一个字符串变量 PORTS,它包含了多个要用来检查的端口号,这些端口号由空格分隔。

(3)for PORT in $PORTS; do

        这是一个 for 循环的开始,它会遍历 PORTS 变量中的每一个端口号,并将每个端口号临时赋值给变量 PORT。

(4)(nc -z -w5 $HOST $PORT) &> /dev/null

        这行代码使用 nc(netcat)命令来尝试建立到指定主机和端口的连接。若本机没有安装netcat,可以使用yum install netcat 在centos中进行安装。

        -z 参数告诉 nc 只在扫描端口时使用,而不发送任何数据。

        -w5 参数设置了等待连接的超时时间为 5 秒。

        &> /dev/null 将命令的标准输出和标准错误都重定向到 /dev/null,这意味着任何输出或错误信息都不会在终端上显示。

(5)if [ $? -eq 0 ]; then

        这行代码检查上一个命令(即 nc 命令)的退出状态。$? 是一个特殊的变量,用于存储上一个命令的退出状态。如果 nc 命令成功连接到端口(即端口是开放的),它会以状态码 0 退出。

(6)echo "$PORT is opening....."

        如果 nc 命令成功(即端口开放),这行代码会输出该端口的状态信息。

(7)else

        这是 if 语句的 else 部分,它会在 nc 命令失败时执行。

(8)echo "$PORT close"

        如果 nc 命令失败(即端口关闭),这行代码会输出该端口的状态信息。

(9)fi

        这行代码标志着 if 语句的结束。

(10)done

        这行代码标志着 for 循环的结束。

(二)脚本验证

1、脚本编辑

        使用编辑器,比如vi,把代码输入进去;

        保存这个脚本到一个文件中,比check_port.sh

2、给予执行权限

      chmod +x w check_port.sh

3、运行脚本,查看效果

     可以运行这个脚本来检查进程的运行情况,如下:

[root@localhost home]#
[root@localhost home]# ll
总用量 12
-rwxr-xr-x 1 root root 260 3月   3 13:24 check_port.sh
-rw-r--r-- 1 root root  76 3月   2 23:11 host.txt
-rwxr-xr-x 1 root root 547 3月   2 23:11 select_host.sh
[root@localhost home]#
[root@localhost home]#
[root@localhost home]# sh check_port.sh localhost
22 is opening.....
25 is opening.....
80 close
3306 is opening.....
8080 close
26088 is opening.....
26089 is opening.....
[root@localhost home]#

四、扩展

        在实际使用中, 可能还要查看其他端口,直接在脚本文件添加即可;若需要查看多个host的情况,可以修改脚本,或者直接在命令中添加多个host即可。

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

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

相关文章

构建 ESLint 内存泄露检测插件入门:提升代码质量与防范运行时风险

前言 本文目的是介绍如何创建开发一个自定义规则 ESLint 插件。利用其能力,检测一些代码中可能存在的内存泄露并及时进行提示,避免潜在的后期影响。 本文实现其中一部分功能–检测事件监听器的使用是否存在内存泄露为例来演示基本的 ESLint 自定义规则插件开发的过程。用以…

nginx笔记整理

目录 一.Nginx基础介绍 二.nginx安装配置 三.Nginx配置文件 3.1nginx主配置文件(/etc/nginx/nginx.conf) 3.2默认的网站配置文件(/etc/nginx/conf.d/default.conf) 四.创建新的虚拟主机 五.Nginx日志 5.1nginx日志格式 5.2查看日志 5.3日志缓存(了解) 5.4日志轮转(/…

COMPOSER安装使用WIN下升级PHP-V

想用TP6使用phpspreadsheet但是说我PHP版本低,原来是PHP7.0 composer要求至少7.4 直接修改环境变量,把PHP目录切换到7.4 composer升级比较简单,在PHP目录下CMD然后官网的命令执行下即可 下面就可以在TP根目录下执行命令安装PHPSPREADSHEET…

sdbusplus:为connection绑定bus

基于前面对于sdbusplus的使用,可以看出,使用sdbusplus时可以通过bus完成method的调用,也可以通过connection完成方法的调用,比如: auto b = bus::new_default_user(); b.new_method_call(...); boost::asio::io_context io; auto conn = make_shared<sdbusplus::asio…

SpringBoot的基本了解

SpringBoot能广泛应用的原因 1:独立运行 Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器 中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。 2:简化配置 spring-boot-starter-web启动器自动…

Domain-Wall Memory Buffer for Low-Energy NoCs

目录 Domain-Wall Memory Buffer for Low-Energy NoCs主要工作DWM&#xff1a; Domain-wall memory磁畴壁存储器磁性纳米线阵列设计 开销分析实验设计实验结果分析 参考资料 Domain-Wall Memory Buffer for Low-Energy NoCs 主要工作 我们基于SRAM在NoC中使用的头尾指针概念&a…

2024年【道路运输企业主要负责人】考试报名及道路运输企业主要负责人模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 道路运输企业主要负责人考试报名根据新道路运输企业主要负责人考试大纲要求&#xff0c;安全生产模拟考试一点通将道路运输企业主要负责人模拟考试试题进行汇编&#xff0c;组成一套道路运输企业主要负责人全真模拟考…

字符串匹配——烦人的KMP

相信很多同学看到这篇文章的时候&#xff0c;已经被KMP拿捏了吧&#xff01;KMP算法说难&#xff0c;倒也不是很难&#xff0c;手算都会&#xff0c;说不难吧&#xff0c;短短几行代码愣是看不懂&#xff0c;辗转反侧&#xff0c;翻书查阅&#xff0c;视频讲解&#xff0c;最后…

MySQL性能提升之道:深入探讨SQL与索引优化实战技巧

MySQL性能优化&#xff1a; MySQL性能优化是一个涉及多个层面的过程&#xff0c;旨在提高数据库的响应速度、处理能力和资源利用率。以下是一些关键的性能优化策略&#xff1a; 硬件优化&#xff1a; 升级硬件资源&#xff0c;如CPU、内存、SSD硬盘等&#xff0c;以提供更好的…

electron nsis 安装包 window下任务栏无法正常固定与取消固定 Pin to taskbar

问题 win10系统下&#xff0c;程序任务栏在固定后取消固定&#xff0c;展示的程序内容异常。 排查 1.通过论坛查询&#xff0c;应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…

三、低代码平台-单据配置(单表增删改查)

一、业务效果图 主界面 二、配置过程简介 配置流程&#xff1a;业务表设计 -》业务对象建立-》业务单据配置-》菜单配置。 a、业务表设计 b、业务对象建立 c、业务单据配置 功能路径&#xff1a;低代码开发平台/业务开发配置/单据配置维护 d、菜单配置

linux-tar命令--exclude

命令如下&#xff1a;将workscript 压缩成workscript_v2.tar.gz&#xff0c;不打包workscript_v2目录下的logs下的所有文件。 tar -zcf workscript_v2.tar.gz workscript --excludeworkscript_v2/logs workscript_v2.tar.gz--压缩的文件名&#xff0c;可自定义 workscript--…

GCN原理回顾论文导读

Cora_dataset description Cora数据集是一个常用的学术文献用网络数据集&#xff0c;用于研究学术文献分类和图网络分析等任务。 该数据集由机器学习领域的博士论文摘要组成&#xff0c;共计2708篇论文&#xff0c;涵盖了7个不同的学科领域。每篇论文都有一个唯一的ID&#xf…

【Linux】linux内核模块编译makefile

1、编译进内核的模块 如果需要将foo.ko编译进内核&#xff0c;需要在makefile中进行配置&#xff1a; obj-y foo.o2、编译可加载的模块 如果需要将foo.ko编译成可加载模块&#xff0c;需要在makefile中进行配置&#xff1a; obj-m foo.oobj-m表示编译生成可加载模块。相对…

jQuery详细介绍

一、引言 在Web开发的历史长河中&#xff0c;JavaScript一直扮演着至关重要的角色。然而&#xff0c;原生的JavaScript在某些方面存在不足&#xff0c;如浏览器兼容性、DOM操作繁琐等。为了简化这些问题&#xff0c;jQuery应运而生。jQuery是一个轻量级的、功能丰富的JavaScri…

李沐动手学习深度学习——3.5练习

减少batch_size&#xff08;如减少到1&#xff09;是否会影响读取性能&#xff1f; 肯定会影响&#xff0c;计算机io性能而言&#xff0c;随着batch_size增大&#xff0c;读取越来越快&#xff0c;需要的时间越少。这里会涉及到计算机操作系统的知识点&#xff0c;内存与硬盘之…

AmzTrends x TiDB Serverless:通过云原生改造实现全局成本降低 80%

本文介绍了厦门笛卡尔数据&#xff08;AmzTrends&#xff09;在面临数据存储挑战时&#xff0c;选择将其数据分析服务迁移到 TiDB Serverless 的思路和实践。通过全托管的数据库服务&#xff0c;AmzTrends 实现了全局成本降低 80% 的效果&#xff0c;同时也充分展示了 TiDB Ser…

redis一些概念知识

一、redis是什么 Redis是一种非关系型数据库&#xff08;NoSQL&#xff09;&#xff0c;它主要以键值对存储数据。与传统的关系型数据库相比&#xff0c;Redis更注重内存操作和高性能&#xff0c;常被用作缓存系统或分布式存储系统。 以简单的比喻来解释Redis&#xff0c;可以…

kafka进阶(二)

文章目录 前言一、Ack机制二、ISR集合总结 前言 本篇主要介绍kafka 的 Ack机制 和 ISR集合 一、Ack机制 Kafka提供了三种不同的应答机制&#xff08;ACK&#xff09;&#xff1a; acks0&#xff1a;这是最不可靠的模式。在这种模式下&#xff0c;生产者不会等待来自服务器的…

三、软考-系统架构设计师笔记-计算机系统基础知识

计算机系统概述 计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。 它是按人的要求接收和存储信息&#xff0c;自动进行数据处理和计算&#xff0c;并输出结果信息的机器系统。 冯诺依曼体系计算机结构&#xff1a; 1、计算机硬件组成 冯诺依曼计算机结构将…