腳本功能目的
此腳本主要是為了方便安裝Denyhosts及釋放需要解封的IP地址,一鍵安裝Denyhosts皱坛,腳本默認(rèn)安裝的版本是3.0,在腳本中有定義版本號的變量夫偶,修改為指定的版本即可安裝對應(yīng)的Denyhosts版本。可能低版本不支持徒恋,盡量使用默認(rèn)版本。一鍵釋放IP欢伏,如果誤封IP入挣,如公司的辦公網(wǎng)公網(wǎng)IP被封了,導(dǎo)致公司的網(wǎng)絡(luò)無法連接Linux服務(wù)器硝拧,這就需要解封IP了径筏。當(dāng)然需要在另一個網(wǎng)絡(luò)(手機流量共享wifi)中連接Linux服務(wù)器,執(zhí)行腳本釋放IP障陶。
腳本內(nèi)容及解釋
腳本名稱Denyhostsctl.sh滋恬,名字可自定義。使用腳本時請記得給腳本添加執(zhí)行權(quán)限抱究,如:chmod u+x Denyhostsctl.sh
執(zhí)行腳本前可調(diào)式腳本執(zhí)行過程:sh -x ./Denyhostsctl.sh
,顯示腳本執(zhí)行的每一步恢氯,如果執(zhí)行某一步出現(xiàn)錯誤,可精確定位腳本出錯位置鼓寺,然后查看腳本對應(yīng)的腳本內(nèi)容勋拟。
]# cat Denyhostsctl.sh
#!/bin/bash
# Denyhosts版本
Denyhosts_Version=3.0
# 腳本所在路徑
ScriptsDir=$(dirname $0)
# Denyhosts配置文件
Denyhost_Config="/etc/denyhosts.conf"
# Denyhosts控制腳本
Denyhosts_CTL="/etc/init.d/denyhosts"
# 釋放IP
IP=$2
## 函數(shù)定義
# Denyhosts 安裝
Install(){
# 下載Denyhosts安裝包
if [ ! -f ${ScriptsDir}/denyhosts-${Denyhosts_Version}.tar.gz ];then
wget https://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/${Denyhosts_Version}/denyhosts-${Denyhosts_Version}.tar.gz --no-check-certificate
fi
# 解壓軟件包,安裝Denyhosts
if [ ! -f ${Denyhost_Config} ];then
tar -xzf ${ScriptsDir}/denyhosts-${Denyhosts_Version}.tar.gz
cd ${ScriptsDir}/denyhosts-${Denyhosts_Version}
/usr/bin/python setup.py install
fi
# 修改配置文件${Denyhost_Config}
if [ -f /var/log/secure ];then
sed -i 's#SECURE_LOG = /var/log/.*#SECURE_LOG = /var/log/secure#g' ${Denyhost_Config}
elif [ -f /var/log/auth.log ];then
sed -i 's#SECURE_LOG = /var/log/.*#SECURE_LOG = /var/log/auth.log#g' ${Denyhost_Config}
fi
# 拷貝控制腳本,設(shè)置開機啟動
## 拷貝控制腳本
if [ ! -f ${Denyhosts_CTL} ];then
cp -a ${ScriptsDir}/denyhosts-${Denyhosts_Version}/daemon-control-dist ${Denyhosts_CTL}
sed -i 's#sbin/denyhosts#bin/denyhosts.py#g' ${Denyhosts_CTL}
## 設(shè)置開機啟動
chown root ${Denyhosts_CTL}
chmod 700 ${Denyhosts_CTL}
chkconfig denyhosts on
fi
# 重啟Denyhosts
${Denyhosts_CTL} restart
}
# IP封禁解yy除
Release(){
# 刪除/etc/hosts.deny記錄
sed -i /${IP}/d /etc/hosts.deny
# 刪除日志/var/log/[secure,auth.log]中的記錄。
if [ -f /var/log/secure ];then
sed -i /${IP}/d /var/log/secure
elif [ -f /var/log/auth.log ];then
sed -i /${IP}/d /var/log/auth.log
fi
# 刪除denyhosts中的記錄
sed -i /${IP}/d /var/lib/denyhosts/*
# 刪除防火墻中的記錄
iptables -D INPUT --source ${IP} -j DROP &> /dev/null
# 重啟Denyhosts
${Denyhosts_CTL} restart
}
# 執(zhí)行腳本
case $1 in
install)
# 檢查輸入的參數(shù)個數(shù)是否為1侄刽,安裝腳本只需要一個參數(shù)指黎,就是install朋凉。
if [ $# -eq 1 ];then
Install
else
echo -e "\e[1;33mUsage: \e[0m \e[1;32m$(basename $0)\e[0m [install|release] [IP]"
fi
exit;;
release)
# 釋放IP腳本州丹,需要兩個參數(shù),參數(shù)一:功能參數(shù)杂彭,install-安裝墓毒,release-IP釋放。參數(shù)二:IP-要釋放的IP地址亲怠。判斷是否滿足參數(shù)個數(shù)2
if [ $# -eq 2 ];then
# 檢查IP地址格式所计。
echo $2 |grep '[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}' &> /dev/null
if [ $? -eq 0 ];then
Release
else
echo -e "\e[1;31m[ERROR]\e[0m \e[1;32mIP地址格式錯誤,請輸入正確的IP地址\e[0m"
fi
else
echo -e "\e[1;33mUsage: \e[0m \e[1;32m$(basename $0)\e[0m [install|release] [IP]"
fi
exit;;
*)
# 輸出腳本使用方法
echo -e "\e[1;33mUsage: \e[0m \e[1;32m$(basename $0)\e[0m [install|release] [IP]"
exit;;
esac
]#
腳本使用方法
此腳本為一鍵執(zhí)行腳本团秽,執(zhí)行方法簡單主胧。
# 方法一
cd /path/to/scripts/ # 切換到腳本所在目錄
./Denyhostsctl.sh [Install|Release] [IP] # 執(zhí)行腳本
# 舉例
./Denyhostsctl.sh install # Denyhosts安裝
./Denyhostsctl.sh release 192.168.0.2 # 釋放IP:192.168.0.2,不再攔截該IP的連接請求习勤。
# 方法二
/path/to/scripts/Denyhostsctl.sh [Install|Release] [IP] # 絕對路徑執(zhí)行腳本
# 舉例
/usr/local/scripts/Denyhostsctl.sh install # Denyhosts安裝
/usr/local/scripts/Denyhostsctl.sh release 192.168.0.2 # 釋放IP:192.168.0.2踪栋,不再攔截該IP的連接請求。
# 查看腳本用法
./Denyhostsctl.sh # 不加任何參數(shù)图毕,則會輸出腳本用法信息
Usage: Denyhostsctl.sh [install|release] [IP]
## install|release 第一個參數(shù)夷都,功能參數(shù),安裝或者釋放
## IP 要釋放的IP地址
查看腳本執(zhí)行方法
查看腳本幫助
調(diào)試腳本-install
調(diào)試腳本-install
調(diào)試腳本-release
調(diào)試腳本-release
腳本是死的予颤,人是活的囤官,可以根據(jù)自己的想法修改腳本冬阳。