利用shell脚本定时扫描线上服务是否开启,发邮件到相关人的邮箱。需要安装nmap yum install nmap 。
nmap [Scan Type(s)] [Options] {target specification}
参数:
[扫瞄类型]:主要的扫瞄类型有底下几种:
-sT:扫瞄 TCP 封包已建立的连线 connect() !
-sS:扫瞄 TCP 封包带有 SYN 标签的资料
-sP:以 ping 的方式进行扫瞄
-sU:以 UDP 的封包格式进行扫瞄
-sO:以 IP 的协定 ( protocol ) 进行主机的扫瞄
[扫瞄参数]:主要的扫瞄参数有几种:
-PT:使用 TCP 里头的 ping 的方式来进行扫瞄,可以获知目前有几部电脑存活(较常用)
-PI:使用实际的 ping (带有 ICMP 封包的) 来进行扫瞄
-p :这个是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式
[Hosts 位址与范围]:这个有趣多了,有几种类似的类型
192.168.0.100 :直接写入 HOST IP 而已,仅检查一部;
192.168.0.0/24 :为 C Class 的型态,
192.168.*.* :嘿嘿!则变为 B Class 的型态了!扫瞄的范围变广了!
192.168.0.0-50,60-100,103,200 :这种是变形的主机范围啦!很好用吧!
#!/bin/bash
interface="http://192.168.7.63/monitor.php"
server=(\
"192.168.1.244:8300:大厅db代理" \
"192.168.1.244:6300:斗地主db代理" \
"192.168.1.244:80:http服务器"\
)
for str in ${server[@]}
do
IFS=':'
arr=($str)
nmap -sS ${arr[0]} -p ${arr[1]} | grep ${arr[1]} | grep open
if [ $? -eq 0 ]; then
else
curl -d "ip=${arr[0]}&port=${arr[1]}&service=${arr[2]}" "$interface"
fi
done