前序

其实无非就是实现apache web服务的连接数监控, 当发现web被访问的时候记录当前访问的IP与当前访问连接数, 注释部分是调用python twilio模块发短信通知告警的。

shell

#*************************************************************************
#         > File Name: netsum.sh
#         > Author: chenglee
#         > Main : chengkenlee@sina.com
#         > Blog : http://www.cnblogs.com/chenglee/
#         > Created Time : 2019年03月11日 星期一 18时48分25秒
#*************************************************************************
#!/bin/bash
port="80"

while [ "1" = "1" ]
do
    connsum=`netstat -antp | grep $port | grep ESTABLISHED | wc -l`
    #connsip=`netstat -antp | grep $port | awk -F ' ' '{print$5}' | awk -F ':' '{print$1}' | sort | uniq`
    connsip=`netstat -antp | grep $port | awk -F ' ' '{print$5}' | awk -F ':' '{print$1}' | awk 'NR>1' | sort | uniq`
    if [ "$connsum" -eq "0" ];then
        echo
    else
        time3=$(date "+%Y-%m-%d %H:%M:%S")
        echo $time3 >> title.txt
        echo 当前连接数: $connsum,当前连接IP: $connsip >> title.txt
        echo "###########################################" >> title.txt
    fi
sleep 3
#echo 当前连接数: $connsum,当前连接IP: $connsip > title2.txt
#connsnr=title2.txt
#connsct=title.txt
#diff $connsnr $connsct > /dev/null
#if [ $? == 0 ]; then
#    conntxt=`cat $connsct | awk -F ' ' '{print$NF}'`
#    #echo $conntxt
#    #echo $connsip
#    if [[ $connsip =~ $conntxt ]]; then
#        echo "匹配"
#    else
#        echo "发送短信通知"
#        echo 当前连接数: $connsum,当前连接IP: $connsip >> pylog.logs
#        python main.py title.txt
#    fi
#else
#    echo
#fi
done

python

解释: 文字部分可以通过注册短信服务twilio获取到。
这样, 一旦发现对方访问你的web服务端口, 就会被记录ip然后发送到您的手机。

#!/usr/bin/env python
# -*- coding=utf8 -*-
"""
# Author: chenglee
# Created Time : 2019年03月11日 星期一 19时24分06秒
# File Name: main.py
# Description:
"""
from twilio.rest import Client
import codecs
import os
import fileinput

#from twilio
#https://www.twilio.com/console/phone-numbers/verified
ACCOUND_SID = '您的ACCOUND_SID'
AUTH_TOKEN = '您的AUTH_TOKEN'
#send to phone
TOPHONE='+您的手机'
#twilio from phone
FOPHONE='+您的FOPHONE'

#twilio
def read1():
    client =Client(ACCOUND_SID,AUTH_TOKEN)

    file=codecs.open('title.txt','r','utf-8')
    CHENG=file.readlines()

    message = client.messages.create(
        to=TOPHONE,
        from_=FOPHONE,
        body=CHENG)
    print(message.sid)
#
def read2():
#    f = codecs.open('title.txt','r','utf-8')
#    s = f.readlines()
#    f.close()
#    for line in s:
#        CHENG=line.encode('utf-8')
#        print CHENG

    file=codecs.open('title.txt','r','utf-8')
    content=file.readlines()

#main()
if __name__ == '__main__':

    read1();
文档更新时间: 2019-03-12 10:35   作者:杭州-雪翊寒|深圳-夏天