nc 探测端口_Linux利用nc命令监控服务器端口的方法
最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉需要能够立即告警处理。批量的系统监控比较好的是用nagios软件来实现,这样小项目专门装一个nagios软件,有点繁琐了。在网上查了一些资料,总结实验了一下,可以用简单的nc命令来实现。
一、nc命令检测端口的用法# nc -v -w 10 %IP% -z %PORT%
-v 显示指令执行过程。
-w 设置等待连线的时间。
-u 表示使用UDP协议
-z 使用0输入/输出模式,只在扫描通信端口时使用。
例1:扫描指定的8080端口
# nc -v -w 10 -z 192.168.0.100 8080
Connection to 192.168.0.100 8080 port [tcp/http] succeeded!
例2:扫描20到25的端口范围,并详细输出。
# nc -v -w 2 -z 192.168.0.100 20-25
nc: connect to 192.168.0.100 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.0.100 port 21 (tcp) failed: Connection refused
Connection to 192.168.0.100 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.0.100 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.0.100 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.0.100 port 25 (tcp) failed: Connection refused
例3:扫描1到65535的端口范围,只输出打开的端口(去掉-v参数即可)
# nc -w 1 -z 192.168.0.100 1-65535
Connection to 192.168.0.100 22 port [tcp/ssh] succeeded!
Connection to 192.168.0.100 80 port [tcp/http] succeeded!
Connection to 192.168.0.100 2121 port [tcp/scientia-ssdb] succeeded!
Connection to 192.168.0.100 4004 port [tcp/pxc-roid] succeeded!
Connection to 192.168.0.100 8081 port [tcp/tproxy] succeeded!
Connection to 192.168.0.100 11211 port [tcp/*] succeeded!
二、批量检测服务器指定端口开放情况:1、假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列服务器IP,第2列要监控的端口)。
# vim /scripts/ip-ports.txt
192.168.0.100 80
192.168.0.100 8081
192.168.0.101 8082
192.168.1.100 21
2、我们可以写这样一个脚本来批量检测端口是否开放:
# vim /scripts/ncports.sh
#!/bin/bash
#检测服务器端口是否开放,成功会返回0值显示ok,失败会返回1值显示fail
cat /scripts/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、执行脚本查看运行结果如下:
# chmod a+x /scripts/ncports.sh
# /scripts/ncports.sh
192.168.0.100 80:ok
192.168.0.100 8081:ok
192.168.0.101 8082:ok
192.168.1.100 21:fail
三、端口不通时设置告警:
1、 邮件告警:1) 先安装linux下面的邮件发送程序mutt(参见我另一篇文章《Linux下面如何用mutt命令发送邮件》
2) 修改上面的ncports.sh检测脚本,在显示失败fail的时候增加一行:
……………………
echo $line :fail
echo "服务器 $line 端口不通,请尽快处理!" | mutt -s "【机房监控】服务器$line端口不通" test@139.com
……………………
3) 如果上面的接收邮箱设置为移动139邮箱,并开启接收邮件短信告知,即可实现“短信告警”的功能。
2、 windows消息弹窗告警:(1) 先打开接收消息弹窗windows客户机的“Messenger”服务,设置为“启动”
(2) 利用smbclient命令来发送消息,net脚本文件如下:
# vim /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 "
exit 1
esac
# chmod a+x /scripts/net.sh
(3) 发送消息弹窗命令测试:(发送给192.168.1.83这台win xp机子,发送内容不支持中文)
# /scripts/net.sh send 192.168.1.83 "hello,nihao"
3、端口不通时发送邮件并消息弹窗告警的脚本如下:
# vim /scripts/ncports.sh
#!/bin/bash
#检测服务器端口是否开放,成功会返回0值,打不开会返回1值
cat /scripts/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 端口不通,请尽快处理!" | mutt -s "【机房监控】服务器$line端口不通" test@18.com
/scripts/net.sh send 192.168.1.83 "The $line fail"
fi
done
4、加入任务计划每2分钟执行一次
# crontab -e
*/2 * * * * /scripts/ncports.sh > /dev/null 2>&1
# service crond restart
nc 探测端口_Linux利用nc命令监控服务器端口的方法相关推荐
- Win10系统Ping端口及利用telnet命令Ping 端口
Win10系统Ping端口及利用telnet命令Ping 端口 启用 telnet 客户端组件为 Ping 端口做准备 在搜索栏搜索 "启用或关闭Windows功能": 在打开的对 ...
- Win7系统Ping端口及利用telnet命令Ping 端口
启用 telnet 客户端组件为 Ping 端口做准备 1 在桌面左下角点击"开始菜单",打开控制面板,如下图所示: 2 在控制面板界面中,将查看方式修改为类别,再点击" ...
- mysql命令行查看端口占用_linux下常用命令查看端口占用
在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询 netstat命令各个参数说明如下: -t : 指明显示TCP端 ...
- 命令查看mysql端口映射_【转载】烂泥:如何利用telnet命令检测端口映射是否成功...
本文由男装世家提供友情赞助,首发于 为了测试在路由器上端口映射设置没有问题,远程可以通过telnet命令来验证端口是否映射成功,即在dos命令行下输入telnet +路由器WAN口IP +对应的端口号 ...
- lsof查看进程占用文件_Linux 利用lsof命令查找已经删除的文件来释放磁盘空间
测试环境一台服务器/ 根目录空间使用率达到94%,但是通过du -sh * 发现实际空间没没用用到那么多,初步怀疑,之前删除的文件,有运行中的进程一直占用,导致空间没有释放,如图通过du -sh * ...
- redhat 添加ssh端口_Linux修改SSH远程登录端口 --服务器安全篇
1.修改SSH远程登录端口为5000 输入 vi/etc/ssh/sshd_config Port 5000 #把'#Port 22'修改为'Port 5 ...
- xshell查看mysql端口_linux中如何查看某个端口是否被占用
之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep ...
- centos mysql 端口_Linux CentOS Mysql修改默认端口
为了提高服务器的安全性,本节课主要讲的是Linux下如何修改Mysql端口.支持Linux环境下大部分系统的修改,如Centos和Ubuntu等. 演示环境: Linux CentOS 6.3 X32 ...
- java telnet端口_Java 实现 telnet命令 验证主机端口的连通性
Java 实现 telnet命令 验证主机端口的连通性 1.Telnet 命令 Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计 ...
最新文章
- WPF及Silverlight中将DataGrid数据导出
- POJ2533解题报告
- java之上三角矩阵_7.2.4 编程题《判断是否为上三角矩阵》
- Java Daemon线程
- mysql binaryVInstall
- 排列与组合的Java递归实现 (参考)
- idea for mac 控制台 mvn command not found
- OutOfMemoryError:无法创建新的本机线程–问题神秘化
- 2.1.3码元、波特、速率、带宽
- php golang 加密 对接,把php的加密算法转为go语言
- 机器学习模型导出为PMML的方法
- Android Train—notification通知
- 安卓学习笔记44:开源框架okhttp3入门
- Dart入门—基础类型与正则
- 苹果iOS 11.3.1正式发布,修复iPhone 8触屏bug
- IS-IS邻接关系建立过程
- 自学 6 个月 Java 找到了一份 15K 的工作,师弟的方式值得推荐给大家
- ue4 unreal 使用 Download Image 下载图片 下载多张图片 批量下载 类似untiy协程
- 一文看尽Stata绘图
- [TI TDA4 J721E]开发板网络调试功能及开机自动配置网络