【Linux】之nc命令(连接与扫描指定端口、监测服务端口的使用情况)解析、详解实例、邮件告警

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

文章目录

  • nc命令简介
  • nc命令的安装
  • nc命令语法格式
  • nc命令常用参数
  • 参考实例(❀为重点解析)
    • 扫描指定主机的8080端口(默认TCP):
    • ❀扫描指定主机的1-100端口,指定为UDP协议,扫描等待连线时间为2秒:
    • ❀扫描指定主机的8088端口,并显示执行过程,扫描等待连线时间为2秒:
    • 扫描指定主机的80-85端口,并显示执行过程,扫描等待连线时间为2秒:
    • 扫描指定主机的1到65535的端口范围,只输出打开的端口(去掉-v参数即可)
    • ❀批量检测服务器指定端口开放情况:
    • 当端口不通时设置告警
      • Linux邮件告警
      • zabbix告警
      • windows弹窗告警
      • linux邮件告警及zabbix告警的优缺点
    • nc命令文件拷贝
    • nc命令目录传输
    • nc命令在线聊天

nc命令简介

  nc命令来自于英文词组“Net Cat”的缩写,其功能是用于扫描与连接指定端口。nc命令是一个功能丰富的网络实用工具,被誉为网络界的瑞士军刀,短小精干,功能实用。它能够基于命令行在网络上读取和写入数据,连接与扫描指定端口号,支持TCP和UDP协议,为用户提供无限潜在用途。
  主要用于扫描与监测指定端口。

nc命令的安装

要有外网yum源

yum -y install nc

nc命令语法格式

nc [参数] 域名/IP地址 [端口]

nc命令常用参数

-l使用监听模式,管控传入的资料
-p设置本地主机使用的通信端口
-s设置本地主机送出数据包的IP地址
-u使用UDP传输协议
-v显示指令执行过程
-w设置等待连线的时间
-z使用0输入/输出模式,只在扫描通信端口时使用
-n不使用dns反向查询ip地址域名

参考实例(❀为重点解析)

扫描指定主机的8080端口(默认TCP):

#扫描指定目标ip和端口
nc -nvv 172.16.11.210 8080

#扫描本地8080端口
nc -nvv 127.0.0.1 8080

#扫描指定目标IP和端口且输出详细信息
nc -v -z -w2 172.16.11.210 8080

在这里插入图片描述

在这里插入图片描述

❀扫描指定主机的1-100端口,指定为UDP协议,扫描等待连线时间为2秒:

#扫描成功与不成功都不会输出,可使用echo $?判断是否成功
nc -u -z -w2 172.16.11.210 1-100

❀扫描指定主机的8088端口,并显示执行过程,扫描等待连线时间为2秒:

#加上-v扫描成功与不成功都会输出
nc -v -z -w2 172.16.11.210 8088

这是不成功的输出

在这里插入图片描述

这是成功输出

在这里插入图片描述

扫描指定主机的80-85端口,并显示执行过程,扫描等待连线时间为2秒:

nc -v -z -w2 172.16.11.210 80-85

在这里插入图片描述

扫描指定主机的1到65535的端口范围,只输出打开的端口(去掉-v参数即可)

nc -z -w2 172.16.11.210 1-65535

❀批量检测服务器指定端口开放情况:

1、假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列服务器IP,第2列要监控的端口)。
要注意:写ip和端口的文件中不能有注释不能有空行,只能是ip 端口;如果后面跟注释,会是失败,空行也会读取为失败
ip可自行写要监控的ip地址端口同意。

[root@localhost ncport]# cat ip-ports.txt

172.16.11.210 80
172.16.11.210 6379
172.16.11.210 18000
172.16.11.211 3306
172.16.11.212 10001
172.16.11.209 8099
172.16.11.210 8088

2、使用脚本监测判断服务端口是否开放,成功会返回0值显示ok,失败会返回1值显示fail。
借用上面一步的文件,文件内容是自己要监控的ip地址端口。

[root@localhost ncport]# cat nc-ports.sh 

#/bin/bash

cat /data/ncport/ip-ports.txt | while read line;do
	nc -w 10 -z $line > /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo $line:ok
	else
		echo $line:fail
	fi
done

3、执行脚本查看运行结果如下:

[root@localhost ncport]# sh nc-ports.sh 

172.16.11.210 80:fail
172.16.11.210 6379:fail
172.16.11.210 18000:fail
172.16.11.211 3306:fail
172.16.11.212 10001:fail
172.16.11.209 8099:fail
172.16.11.210 8088:ok


当端口不通时设置告警

Linux邮件告警

(1) 先在linux上安装邮件服务,比如直接下载emil或者mutt、sendmail,这里我安装的是【Linux】部署mailx服务及发送邮件告警

(2) 修改上面的nc-ports.sh检测脚本,在显示失败fail的时候增加一行:
……………………
echo $line :fail
echo “服务器 $line 端口不通,请尽快处理!” | mail -s “【机房监控】服务器$line端口不通” mail@139.com
……………………

(3) 如果上面的接收邮箱设置为移动139邮箱,并开启接收邮件短信告知,即可实现“短信告警”的功能。

(4) 也可以使用qq邮箱来发送告警

(5) 如果是在公司使用要给部门或多个人发送告警的话,可以批量发送;发件人是在配置邮件服务中设置的。
……………………
修改上面的nc-ports.sh检测脚本,在最上面加一个函数变量:
mail_ALL=(邮箱1,邮箱2,邮箱3,邮箱4,邮箱5,邮箱6,邮箱7)

修改上面的nc-ports.sh检测脚本,在显示失败fail的时候增加一行:
echo “服务器 $line 端口不通,请尽快处理!” | mail -s “【机房监控】服务器$line端口不通” $mail_ALL
……………………

更改完脚本为:

[root@localhost ncport]# cat nc-ports.sh

#/bin/bash

mail_ALL=(zhangsan@qq.com,lisi@qq.com,wangwu@qq.com)

cat /data/ncport/ip-ports.txt | while read line;do
	nc -w 10 -z $line > /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo $line:ok
	else
		echo $line:fail
		echo "服务器 $line 端口不通,请尽快处理!" | mail -s "【机房监控】服务器$line端口不通" $mail_ALL
	fi
done

需要定时监控的话可以添加周期性计划任务,定时执行一下监测脚本,如果有fail就会告警发邮件;

zabbix告警

(1) 需要上面两个脚本(ip-ports.txt、nc-ports.sh),外加一个判断脚本,如下;一个脚本只能用于监测一个端口

(2) 需要在zabbix-agent配置文件中添加执行脚本命令;UserParameter=111,sh /etc/zabbix/zabbix_agentd.d/ncports/111/111.sh’

(3) 脚本及配置添加完成之后访问zabbix页面去添加监控服务,监控项、触发器…

判断脚本如下:

[root@localhost ncport]# cat 111.sh 
#!/bin/bash

#使用哪个端口写哪个,一个脚本只能用于监测一个端口,如果监测的ip端口是ok,则返回1,如果不是ok或者是没有,则返回0。
port=$(sh /etc/zabbix/zabbix_agentd.d/ncports/nc-ports.sh | grep "172.16.10.111 2222" | awk -F ":" '{print $2}')
#echo $port

if [ '$port' == "ok" ];then
	echo "1"
else
	echo "0"
fi

windows弹窗告警

(1) 先打开接收消息弹窗windows客户机的“Messenger”服务,设置为“启动”

(2) 利用smbclient命令来发送消息,net脚本文件如下:

[root@localhost ncport]# cat /scripts/net.sh

#!/bin/bash
#/scripts/net.sh
case "$1" in
send)
echo "$3"|smbclient -I "$2" -M `nmblookup -A "$2"|sed -e '1d' -e '3,/*/d'|cut -f2|cut -d' ' -f1`
;;
*)
echo "Usage:net send

linux邮件告警及zabbix告警的优缺点

……………………

linux告警优点:不用一个一个添加ip端口,可以直接去过滤甚至多个ip和端口不通会同一时间去告警
zabbix告警优点:可以自己定时去监控,如果失败了会告警,如果恢复了也会告诉一声;到达监控定时的时间如果还是失败,则跳过此次告警。

linux告警缺点:只会发送告警,不会发送恢复告警,而且必须手动写周期性计划任务定时监控,到时候没有恢复还会继续告警
zabbix告警缺点:zabbix告警有些吃力,就你需要监控哪个端口,必须要一个一个写到监控配置中,而且必须要用到调用脚本,如果是ok会恢复告警,如果是fail会告警,但是有时候写错了,脚本中没有找到这个ip或者端口或者端口被停止找不到,则不反回,所以就必须要多加一个脚本。还要在页面添加监控项、触发器…
……………………

  • 推荐使用linux中邮件服务告警,然后用zabbix方式来监控邮件服务是否启动。
  • 如果zabbix服务和linux邮件服务能互相取长补短就好了。
  • 最后,根据自己的个人喜好吧,来定义用哪个告警方式。


nc命令文件拷贝

很多时候我们都要在两个不同的终端间拷贝文件,虽然说有很多种方法,例如:FTP、Samba、Scp等等,但我们仅仅需要一次临时的快捷的连接,不仅要安装软件,还要进行登录操作,如果这样的话那么大部分的时间都会被浪费掉。
假设我们需要传输一个文件bashtest.txt,通过主机A发送到主机B。

发送端(A):

nc -l 10000 < test.txt
  • -l 监听端口,管控传入的资料

通过nc的-l参数将主机A变为服务器,并重定向netcat的输入为文件bashtest.txt,也就是我们想要传输的文件,那么当任何主机成功连接到该端口,netcat就会发送bashtest.txt的文件内容。

接收端(B):

nc -l 172.16.11.210 10000 > test.txt
  • -n 不使用dns反向查询ip地址域名

使用nc命令连接主机A的10000端口,并将输出重定向到test.txt。这样,当主机B连接到主机A时,就会接收到A发来的文件内容,并保存的文件test.txt
反之也是如此,只不过将主机A与主机B的身份进行调换。顺带着,输入与输出重定向也要发生改变。

(接收端)A: nc -l 10000 > test.txt

(发送端)B: nc -n 192.168.78.128 10000 < test.txt


nc命令目录传输

使用nc传输目录实际上和传输文件手法一样,只不过将目录打包为压缩文件,再使用nc将压缩文件传输过去,客户端接收后将接收到的压缩文件解压。
传输目录为test,其下有文件test.txt、test2.txt
由主机A传输到主机B

发送方(A):

tar -zcvf - test | nc -l 10000
  • -z 使用gzip指令处理压缩文件
  • -c 创建新的压缩文件
  • -v 显示指令执行过程,即详细模式
  • -f 指定需要压缩的文件,即test文件夹

接收方(B):

nc 192.168.78.128 10000 | tar -zxvf -
  • -z 使用gzip指令处理压缩文件
  • -x 从压缩文件中解压文件
  • -v 详细模式
  • -f 指定压缩文件

- 代表linux中的标准输出流,将压缩后的文件直接输出到netcat中
发送端接收到通过netcat传输来的文件,再使用tar指令解压文件



nc命令在线聊天

通过netcat实现在线聊天室也需要C/S结构,服务端监听本地端口,客户端直接连接到远程服务器端口。

服务端:

nc -l -p 10000

客户端:

nc 192.168.78.128 10000
  • -l 监听模式
  • -p 指定本地端口,在实际应用中可以省略

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【K8S系列】Pod详解

目录 序言 1 前言 2 为什么需要pod 3 什么是Pod&#xff1f; 3.1 Pod的组成 3.2 Pod的用途 3.3 Pod的生命周期 3.4 Pod的特点 4 Pod的使用 5 结论 序言 任何一件事情&#xff0c;只要坚持六个月以上&#xff0c;你都可以看到质的飞跃。 今天学习一下K8s-Pod相关内容&…

SQL删除记录方式汇总

大家好&#xff0c;我是RecordLiu! 今天给大家分享的是SQL中删除记录的不同方式&#xff0c;我会用几道真题来给大家讲解。 题目直达链接&#xff1a; 牛客网在线SQL编程练习 切换到SQL篇就能看到了。 我这里先列下知识点&#xff1a; SQL中进行简单删除的语法是什么?SQL…

关于AI 绘画,我给你总结了一份详细的关键词(Prompt 知识)

写在前面 随着人工智能技术的不断发展&#xff0c;越来越多的应用场景被发掘。其中&#xff0c;AI绘画是一种新兴的领域&#xff0c;其应用范围涵盖了数字媒体、游戏设计、动画制作、艺术创作等多个领域。在本文中&#xff0c;我们将介绍AI绘画的基本概念、发展历程、技术原理…

最新JavaFx JDK17如何正确的打出可以使用的exe软件包

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、提前需要准备&#xff1f;二、打包步骤1.现将module-info.java删除 选中module-info.java 鼠标右键 Refactor 然后选择safe deleted2.编辑设置 路径 Run/edi…

教你安装各种应用环境-Nodejs

因为最近做项目用到了Nodejs&#xff0c;如果直接下那么用到的就是最新版本。我要用以前的版本这就让我产生了写这篇文章的想法。 安装官网 官网&#xff1a;https://nodejs.org/en 如果安装最新的直接下载安装就行&#xff0c;流程可以看后面。 流程 其他版本点击"O…

年薪30W+,待遇翻倍,我的经历值得每个测试人借鉴

从自考大专到出走公司&#xff0c;从半年无业露宿深圳北站&#xff0c;从8k…到11.5k…再到20k&#xff0c;我的经历值得每个测试人借鉴 或许学历并没有那么重要 12年高考之后&#xff0c;在朋友的介绍下&#xff08;骗了过去&#xff09;&#xff0c;没有好好的读大学&#x…

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细一 Redis的主从复制二 主从复制的作用三 主从复制的流程四 主从复制实验4.1 环境部署4.2 安装Redis&#xff08;主从服务器&#xff09;4.3 修改Master节点Redis配置文件 (192.168.163.100)4.4 修改Slave节点Redis配置文…

计算机网络 - TCP的效率与特性

前言 本篇是介绍部分TCP的特性&#xff0c;了解TCP提高传输速率的机制&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录前言1. 滑动窗口2. 流量控制3.拥塞控制4.延时应答5. 捎带应答6. 面向字节流7. 异常…

Android FrameWork详细教程—第一个启动的程序--init 与 Zygote

第一个启动的程序–init 不管Java还是C运行一个程序都是以main方法作为入口。所以我们先看看init.cpp的main函数. 目录&#xff1a;/system/core/init/main.cpp 具体代码&#xff1a; int main(int argc, char** argv) { #if __has_feature(address_sanitizer)__asan_set_er…

Kaggle 赛题解析 | AMP 帕金森进展预测

文章目录一、前言二、比赛说明1. Evaluation2. Timeline3. Prize4. Code Requirements三、数据说明四、总结&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 竞赛题目&#xff1a;AMP-Parkinson’s Disease Progression Prediction 竞赛地址…

基于逻辑回归构建肿瘤预测模型

使用逻辑回归构建肿瘤预测模型 描述 乳腺癌数据集包括569个样本&#xff0c;每个样本有30个特征值&#xff08;病灶特征数据&#xff09;&#xff0c;每个样本都属于恶性&#xff08;0&#xff09;或良性&#xff08;1&#xff09;两个类别之一&#xff0c;要求使用逻辑回归&…

spring beancopier Cannot invoke “Object.getClass()“ because “cause“ is null异常处理

我们项目用到spring beancopier, 在别的机器上运行正常&#xff0c;代码拉到我机器上就不正常了&#xff0c;抛出异常信息如题。 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.ibm.riskmeasure.rwaservice.service.singlete…

ASP.NET Core MVC 从入门到精通之初窥门径

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

字节跳动软件测试面试过了,起薪20k

普通二本计算机专业毕业&#xff0c;从毕业后&#xff0c;第一份接触测试的工作是在一家通讯小公司&#xff0c;大部分接触的工作是以功能测试为主&#xff0c;一直都是几千块钱工资&#xff0c;还一度被派出差&#xff0c;以及兼职各种产品、运维、运营的活&#xff0c;感觉自…

真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027

然后我们来看连接与关系部分 然后右键一个关系可以看他的配置 注意这个,如果添加多个关系,这里flowfile就会自动clone 然后可以看到连接的配置中有,flowfile过期时间配置,有back pressure 背压配置, 有负载均衡配置 这里的这个FlowFile Expiration是配置FlowFile在队列中的过期…

网络中的一些基本概念

组建网络的重要设备 集线器,交换机(组建局域网,不能跨局域网组建网络),路由器(wifi本质上是无线路由器,路由器的本质的把俩个局域网给连起来) 网络通信的一些基础概念 IP地址 标识了网络设备所在的位置 端口号 标识了一个具体的应用程序 协议 协议是网络通信的概念,约定好…

虹科案例 | 虹科Domo商业智能,助力保险公司逃离繁杂数据池!

金融行业的发展充满着不确定性&#xff0c;一个具备强大承保能力和精算专业知识的资金池&#xff0c;对于身处该领域的公司和个人都是十分必要的。 在全国城市联盟&#xff08;NLC&#xff09;的协助下成立的NCL Mutual会员制互助保险公司&#xff0c;为各个地区城市提供了稳定…

第13届蓝桥杯省赛真题剖析-2022年4月23日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第121讲。 第13届蓝桥杯省赛举办了两次&#xff0c;这是2022年4月23日举行的第二次省赛&#xff0c;比赛仍然采取线上形…

MySQL SQL性能分析 慢查询日志、explain使用

SQL执行频率 MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令&#xff0c;可以查看当前数据库的insert、update、delete、delect的访问频次&#xff1a; -- session 是查看当前会话; -- global 是查询全局数…