一:telnet
此法常被用来检测是个远端端口是否通畅。
[root@oldboy ~]# telnet baidu.com 80
Trying 123.125.114.144...
Connected to baidu.com (123.125.114.144). #==>出现Connected表示连通了,说明百度的80端口开放的
Escape character is '^]'. #==>ctrl+]退出此地。
^]
telnet> quit
Connection closed.
如果写脚本通过telnet检查端口可以用下面的方法:
[root@oldboy ~]# echo -e "\n"|telnet baidu.com 80|grep Connected
Connection closed by foreign host.
Connected to baidu.com (123.125.114.144).
二:通过nmap来检查端口是否通畅
[root@oldboy ~]# nmap etiantian.org -p 80
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-07-22 17:22 PDT
Interesting ports on 211.100.98.99:
PORT STATE SERVICE
80/tcp open http
Nmap finished: 1 IP address (1 host up) scanned in 0.417 seconds
如果写脚本通过nmap检查端口可以用下面的方法:
PORT_COUNT=`nmap $ip_add -p $port|grep open|wc -l`
[[ $PORT_COUNT -ge 1 ]] && echo "$ip_add $port is ok." || echo "$ip_add $port is unknown."
三:通过nc命令检查
[root@oldboy ~]# nc -w 5 211.100.98.99 80 && echo ok
ok
[root@oldboy ~]# nc -w 10 8.8.8.8 53 && echo ok ||echo no
ok
如果写脚本通过nc检查端口并监控memcache服务可以用下面的方法:
export oldboyTimestampMemcachedIp=$1
export oldboyTimestampMemcachedPort=$2
export oldboyTitle=NAGIOS
export oldboyTimestampMD5=4ED06F8D41B9264OLD0BOY30BE5212BB7E34
export wwwServerIp=$3
export wwwServerPort=$4
printf "delete $oldboyTimestampMD5\r\n" | nc $oldboyTimestampMemcachedIp $oldboyTimestampMemcachedPort >/dev/null 2>&1
sleep 1
judge=($(printf "HEAD /oldboy/$oldboyTitle HTTP/1.1\r\nHost: $5\r\n\r\n" | nc $wwwServerIp $wwwServerPort | head -n1|tr "\r" "\n"))
四、NAGIOS 的 check_tcp和check_udp
用途:
check_tcp -H 主机 -p 端口 -W <警告时间>]
[-C ]
[-S <发送字符串>]
[-E ]
[-Q ]
[-M ]
[-D <延迟>]
[-T
[-R ]
[-M ] [-V] [-4 | -6] [-J]
[-D ,]
[-S
check_udp
用途:
check_udp 主机 -p 端口
check_udp -H -W <警告时间>]
[-C ]
[-S <发送字符串>]
[-E ]
[-Q ]
[-M ]
[-D <延迟>]
[-T
[-R ]
[-M ] [-V] [-4 | -6] [-J]
[-D ,] [-S
选项??:
-H, - 帮助
打印详细的帮助屏幕
-V, - ??版
打印版本信息
-H, - 主机名= ADDRESS
主机名,IP地址,或Unix套接字(必须是绝对路径)
-P, - 端口= INTEGER
端口号(默认值:无)
-4 - 使用IPv4的
使用IPv4连接
-6 - 使用IPv6的
使用IPv6连接
-E, - 逃生
可以使用\ n \ r \ t \发送或退出字符串。必须出现在发送或退出选项
默认值:没有发送,\ r \ n结束退出
-S, - = STRING发送
发送到服务器的字符串
-E, - 期望= STRING
期望的字符串在服务器响应(可重复)
-A, - 所有
所有的期望字符串必须出现在服务器的响应。默认为任何
-Q, - 戒烟= STRING
发送服务器发起一个干净的关闭连接的字符串
-R, - 拒绝OK |警告|暴击 OK,接受TCP拒绝与各国发出警告,暴击(默认:暴击)
-M, - 不匹配= OK |警告|暴击
接受期望的字符串不匹配的状态确定,警告,暴击(默认值:warn)
-J, - 监狱
从TCP套接字的隐藏输出
-M, - maxbytes = INTEGER
关闭连接,一旦超过这个数目的字节收到
-D, - 延迟= INTEGER
秒之间的等待时间发送字符串和轮询响应
-D, - 证书= INTEGER,INTEGER]
最小的天数证书是有效的。
1#天的警告,第二次是关键(如果未指定 - 0)。
-S, - SSL
使用SSL的连接。
-W, - 警告= DOUBLE
导致警告状态的响应时间(秒)
-C, - 关键= DOUBLE
在临界状态的响应时间(秒)
-T, - 超时= INTEGER
秒钟,然后连接超时(默认值:10)
-V, - ?? verbose详细
显示命令行调试的详细信息(Nagios的,可能会截断输出)
界面拼装参数格式如下共4个元素:
命令!端口!告警时延!严重告警时延!连接超时时间
check_tcp!23!0.0020!0.0050!10
备注:
check_imap=check_tcp!143
check_ftp=check_tcp!21
check_nntp=check_tcp!119
check_pop=check_udp!110
check_udp=check_tcp
check_telnet=check_tcp!23
阅读(709) | 评论(0) | 转发(0) |