1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| #!/bin/bash
##name=nmap-check-port
##actor=cml
##phone=13926109782
DATE_now=`date +%F`
DATE_yes=`date -d "1 days ago" +%F`
check_ip="/tmp/hosts_list"
list_ip=`cat $check_ip`
mail_check="/tmp/mail_check.txt"
mail_ok="/tmp/mail_ok.txt"
open_ip="/tmp/open_ip.txt"
mail_ip="/tmp/mail_ip.txt"
nmap_check_port(){
if [ ! -f "$mail_ip" ];then
touch $mail_ip
else
rm -rf $mail_ip
touch $mail_ip
fi
if [ ! -d "/tmp/$DATE_now" ];then
mkdir /tmp/$DATE_now
else
rm -rf /tmp/$DATE_now
mkdir /tmp/$DATE_now
fi
if [ ! -f $check_ip ];then
touch $check_ip
else
rm -rf $check_ip
touch $check_ip
fi
if [ ! -f $mail_ok ];then
touch $mail_ok
else
rm -rf $mail_ok
touch $mail_ok
fi
if [ ! -f $mail_check ];then
touch $mail_check
else
rm -rf $mail_check
touch $mail_check
fi
#####先检查有哪些主机存活主机增加或者减少发改变邮件,没改变时发一封正常邮件
nmap -sP 192.168.5.0/24 | awk '/Nmap scan/{print $5}' >> $check_ip
diff $open_ip $check_ip >> $mail_ip
mail=`cat $mail_ip | wc -l`
if [ $mail == 0 ];then
echo "hosts is normal!" | mail -s "check hosts" 406552227@qq.com
else
mail -s "nmap check hosts change('<'=down,'>'=up)" 406552227@qq.com < $mail_ip
fi
for i in $list_ip;do
touch /tmp/$DATE_now/$i.txt
nmap -sS $i | egrep "Nmap scan |open" >> /tmp/$DATE_now/$i.txt
check_port=`diff /tmp/$DATE_now/$i.txt /tmp/$DATE_yes/$i.txt | awk '/open/{print $1,$2}'`
diff /tmp/$DATE_now/$i.txt /tmp/$DATE_yes/$i.txt >> /dev/null
if [ $? -eq 0 ];then
echo "$i is normal!" >> $mail_ok
else
echo "$i:" >> $mail_check
diff /tmp/$DATE_now/$i.txt /tmp/$DATE_yes/$i.txt | awk '/open/{print $1,$2,$4}' >> $mail_check
fi
done
}
while true;do
nmap_check_port
sleep 1800 ###半小时执行一次
DATE_time=`date +%H`
if [ $DATE_time == "00" ];then ###到凌晨12点发送邮件汇报这个可以是用crontab12点执行代替更理想
mail -s "nmap check port is ok('<'=down,'>'=up)" 406552227@qq.com < $mail_ok
mail -s "nmap check port is change('<'=down,'>'=up)" 406552227@qq.com < $mail_check
break
else
nmap_check_port
fi
done
|