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

这篇具有很好参考价值的文章主要介绍了【Linux】之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

nc监听端口,《Linux从入门到精通》,linux,网络,运维,nc命令,端口

nc监听端口,《Linux从入门到精通》,linux,网络,运维,nc命令,端口

❀扫描指定主机的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

这是不成功的输出

nc监听端口,《Linux从入门到精通》,linux,网络,运维,nc命令,端口

这是成功输出

nc监听端口,《Linux从入门到精通》,linux,网络,运维,nc命令,端口

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

nc -v -z -w2 172.16.11.210 80-85

nc监听端口,《Linux从入门到精通》,linux,网络,运维,nc命令,端口

扫描指定主机的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

# 获取执行当前脚本的路径
DIR=$(cd $(dirname $0) && pwd )

cat $DIR/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)

# 获取执行当前脚本的路径
DIR=$(cd $(dirname $0) && pwd )

cat $DIR/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就会告警发邮件;

完整脚本地址:shell批量检测服务端口脚本nc命令检测ip端口是否存在脚本(在linux中用于检测服务状态的)

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 指定本地端口,在实际应用中可以省略

nc监听端口,《Linux从入门到精通》,linux,网络,运维,nc命令,端口文章来源地址https://www.toymoban.com/news/detail-781709.html

到了这里,关于【Linux】之nc命令(连接与扫描指定端口、监测服务端口的使用情况)解析、详解实例、邮件告警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux查看服务端口号、查看端口(netstat、lsof)以及PID对应服务、端口占用连接数

    linux查看服务端口号、查看端口(netstat、lsof) netstat - atulnp会显示所有端口和所有对应的程序,用grep管道可以过滤出想要的字段 -a :all,表示列出所有的连接,服务监听,Socket资料 -t :tcp,列出tcp协议的服务 -u :udp,列出udp协议的服务 -n :port number, 用端口号来显示 -l :

    2024年02月13日
    浏览(35)
  • 主动扫描-Nmap-端口、系统、服务扫描

    目录 一、使用Nmap进行端口扫描 1、关于端口的介绍 ① 个数 ② 作用 ③ 分类 2、Nmap中的各种端口扫描技术 ① SYN扫描 ② Connect扫描 ③ UDP扫描 ④ 端口扫描范围的确定 二、使用Nmap扫描目标系统 1、识别原理 2、参数与意义  3、远程判断目标系统的方法 三、使用Nmap扫描目标服务

    2024年02月09日
    浏览(35)
  • Linux 从入门到精通:Telnet 命令测试服务端口连通性

    1.1 Telnet 基本信息 Telnet 程序命令是基于 TELNET 协议的远程登录客户端程序。Telnet 是 TCP/IP 协议族的成员,是 Internet 远程登录服务的标准协议和主要方式。 Telnet 命令可以用来远程登录或确定远程服务的状态,比如确定远程服务器的某个端口是否能访问。 使用方式: 如果使用

    2024年02月15日
    浏览(25)
  • 【Linux】nc 网络诊断 | 文件传输 命令详解

    目录 一、命令简介 二、命令使用 2.1 测试服务器 2.2 端口连通性测试 2.2.1tcp端口连通性测试 2.2.2udp端口连通性测试 2.3 文件及目录的传输 2.3.1 文件传输(TCP端口) 2.3.2 文件传输(UDP端口)   相关文章: 【网络】抓包工具Wireshark下载安装和基本使用教程 【Linux】网络诊断 ping命令详

    2024年01月18日
    浏览(37)
  • 粉丝提问:设计和实现一个TCP协议半连接的端口扫描程序

    某学生粉丝发来问题: 这个题目一看就知道这位同学是网络安全相关专业。 很多粉丝以为彭老师知识搞驱动的, 但是其实作为一个拥有多篇网络协议专利的老鸟, 网络知识还是比较擅长的! 应用层套接字、组网、网卡驱动都有所涉猎, 目前还缺Linux内核协议栈这块没深入

    2023年04月14日
    浏览(34)
  • C#实现端口扫描和执行cmd命令、调用摄像头

    使用方法: 打开 Visual Studio 或类似的 IDE 新建一个 C# 控制台应用程序 将上述代码复制粘贴到 Program.cs 文件中 调整 host 、 startPort 、 endPort 和 numThreads 等参数 在菜单中选择“生成”,然后选择“生成解决方案” 在菜单中选择“调试”,然后选择“调试 C# 程序” 程序将开始扫

    2024年02月14日
    浏览(31)
  • linux 命令:nc、netcat、ncat、socat

    参考 :http://www.linuxso.com/command/nc.html NC工具的使用说明教程:https://blog.csdn.net/xysoul/article/details/52270149 window 版本 nc 下载:https://eternallybored.org/misc/netcat/ NC 全名 Netcat (网络刀),作者是 Hobbit ChrisWysopal。因其功能十分强大,体积小巧而出名,被誉为网络安全界的 \\\"瑞士军刀\\\"。

    2023年04月08日
    浏览(26)
  • linux 服务器进程、端口查找,nginx 配置日志查找,lsof 命令详解

    1.1 使用查看端口号对应的进程信息 方式一 : 使用netstat命令 -t:显示TCP连接 -u:显示UDP连接 -l:仅显示监听状态的连接 -n:以数字形式显示端口号,而不是以服务名称显示 通过管道符号|将netstat的输出结果传递给grep命令,用于过滤出包含指定端口号的行。 执行命令后,终端

    2024年02月04日
    浏览(47)
  • Linux下安装包或命令安装netcat(nc)

    1、下载netcat安装包 2、解压安装包 3、文件移动 将解压后的文件移动到想要放置的目录下,这里移动到/usr/local 4、编译安装 1:进入解压目录执行命令:        ./configure 2:                                              make make install  5、测试安装是否

    2024年02月05日
    浏览(25)
  • 【Flink学习】NC工具安装使用 Linux命令 Windows安装

    工具安装 01-NC安装Windows版 既往学习没有留痕习惯,用的时候熟练过后就忘记了,重新开始记录学习Flink之路,Fighting! NC是一款用于端口测试、扫描的网络工具。在Flink学习中,主要用于创建端口输入数据模拟数据流。 地址为: https://eternallybored.org/misc/netcat/ 注意!!! Win

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包