解封 Denyhosts 拒绝的IP shell 脚本

#!/bin/bash
#2019-01-20 19:15
#DenyHosts 2.6 auto remove deny ip
#by xucong
################################
clear
date
DENY_DIR="/usr/share/denyhosts/data"
DENY_IP=$1
#############################################
#判断输入的参数只能是1个
if [ $# -ne 1 ];then
   echo -e "\033[31m IP address format error....... \033[0m"
   echo -e "\033[32m-------------------------------------------\033[0m"
   echo -e "\033[32mUsage:{/bin/bash $0 1.1.1.1|192.168.1.1.100|help}\033[0m"
   exit 0
fi
#判断IP 格式是否正确。
if echo $DENY_IP |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then
    A=`echo $DENY_IP | awk -F. '{print $1}'`
    B=`echo $DENY_IP | awk -F. '{print $2}'`
    C=`echo $DENY_IP | awk -F. '{print $3}'`
    D=`echo $DENY_IP | awk -F. '{print $4}'`
#判断第一段IP的第一位是否为零 。
    if [ `echo $A|cut -b 1` -eq 0 ];then
      echo -e "\033[31m IP address error,The first digit cannot be zero. \033[0m"
      exit
    fi
#判断第二段IP的第一位是否为零 。
    if [ `echo $B|cut -b 1` -eq 0 ];then
      echo -e "\033[31m IP address error,The first digit cannot be zero. \033[0m"
      exit
    fi
#判断第三段IP的第一位是否为零 。
   if [ `echo $C|cut -b 1` -eq 0 ];then
     echo -e "\033[31m IP address error,The first digit cannot be zero. \033[0m"
     exit
   fi
#判断第四段IP的第一位是否为零 。
    if [ `echo $D|cut -b 1` -eq 0 ];then
      echo -e "\033[31m IP address error,The first digit cannot be zero. \033[0m"
      exit
    fi
#判断每段IP的值是否大于256
    for n in $A $B $C $D; do
      if [ $n -gt 255 ]; then
      echo -e "\033[31m The IP value should be less than 256.\033[0m "
      exit
     fi
   done
#输入的IP格式不为[0-9].[0-9].[0-9].[0-9] 这样的格式,均是错误IP。 
else
    echo -e "\033[31m IP address format error....... \033[0m"
    echo -e "\033[32m-------------------------------------------\033[0m"
    echo -e "\033[32mUsage:{/bin/bash $0 1.1.1.1|192.168.1.1.100|help}\033[0m"
    exit 
fi
if [ $1 == "help" ]  ;then
   echo -e "\033m[32m-------------------------------------------\033[0m"
   echo -e "\033[32mUsage:{/bin/bash $0 1.1.1.1|192.168.1.1.100|help}\033[0m"
   exit 1
fi
###############################################
for i in `ls $DENY_DIR/`
  do
   sed -i "/$DENY_IP/d" $DENY_DIR/$i
done
sed -i "/$DENY_IP/d"  /etc/hosts.deny
echo "$DENY_IP" >>$DENY_DIR/allowed-hosts
echo -e "\033[32m----------------------\033[0m"
sleep 1
echo -e "\033[32m The Deny IP removed Success.\033[0m"