#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

check_data(){
    if [[ -f /etc/redhat-release ]];then
        OS=CentOS
    elif cat /etc/issue | grep -q -E -i "debian";then
        OS=Debian
    elif cat /etc/issue | grep -q -E -i "ubuntu";then
        OS=Ubuntu
    elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat";then
        OS=CentOS
    elif cat /proc/version | grep -q -E -i "debian";then
        OS=Debian
    elif cat /proc/version | grep -q -E -i "ubuntu";then
        OS=Ubuntu
    elif cat /proc/version | grep -q -E -i "centos|red hat|redhat";then
        OS=CentOS
    else
        echo "Not supported OS, Please reinstall OS and try again."
        exit 1
    fi
rm -rf /root/port_control/data_cache_+port+.txt
iptables -vnL | grep +port+  | awk '{ print $2 }'  >> /root/port_control/data_cache_+port+.txt
Mag=`iptables -vnL | grep +port+  | awk '{ print $2 }' `
    if [[ $Mag == *K* ]]; then
data1=`cat /root/port_control/data_cache_+port+.txt | grep K | tr -d "a-zA-Z" | awk '{sum+=$1} END {print sum}'`
    else
data1=0
    fi
    if [[ $Mag == *M* ]]; then
data2=`cat /root/port_control/data_cache_+port+.txt | grep M | tr -d "a-zA-Z" | awk '{sum+=$1} END {print sum}'`
    else
data2=0
    fi   
    if [[ $Mag == *G* ]]; then
data3=`cat /root/port_control/data_cache_+port+.txt | grep G | tr -d "a-zA-Z" | awk '{sum+=$1} END {print sum}'`
    else
data3=0
    fi
GB=`expr $data1 / 1048576 + $data2 / 1024 + $data3`
rm -rf /root/port_control/data_cache_+port+.txt
    if [ $GB -ge +t+  ];then
iptables -A INPUT -p tcp --dport +port+ -j DROP
echo "+port+ 流量在$(date "+%Y-%m-%d %H:%M:%S")已用了【$GB】GB ，超过了设定的限额"  >> /root/port_control/log.txt  
rm -rf /root/port_control/data_cache_+port+.txt
    if [[ "${OS}" == 'CentOS' ]];
then
    sed -i -e "/+port+/d" /var/spool/cron/root
else
    sed -i -e "/+port+/d" /var/spool/cron/crontabs/root
    fi 
fi
}

check_date(){
    if [[ -f /etc/redhat-release ]];then
        OS=CentOS
    elif cat /etc/issue | grep -q -E -i "debian";then
        OS=Debian
    elif cat /etc/issue | grep -q -E -i "ubuntu";then
        OS=Ubuntu
    elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat";then
        OS=CentOS
    elif cat /proc/version | grep -q -E -i "debian";then
        OS=Debian
    elif cat /proc/version | grep -q -E -i "ubuntu";then
        OS=Ubuntu
    elif cat /proc/version | grep -q -E -i "centos|red hat|redhat";then
        OS=CentOS
    else
        echo "Not supported OS, Please reinstall OS and try again."
        exit 1
    fi		
date="+d+"

day=$(date "+%Y%m%d")

if [ $day -ge $date ]; then
iptables -A INPUT -p tcp --dport +port+ -j DROP
    echo "+port+ 于$(date "+%Y-%m-%d")已到期"  >> /root/port_control/log.txt
    if [[ "${OS}" == 'CentOS' ]];
then
    sed -i -e "/+port+/d" /var/spool/cron/root
else
    sed -i -e "/+port+/d" /var/spool/cron/crontabs/root
    fi     
fi
}

rm -rf /root/port_control/data_cache_+port+.txt
check_data
check_date