Добавлен bash-скрипт проверки сайтов

parent 4e35fa26
#!/bin/bash
##
## - functions start
##
function timer() {
echo -n "Идет проверка сайтов (может занять несколько минут): "
while sleep 1
do
echo -n "* "
done
}
function FatalError() {
echo "Fatal error: $1"
exit
}
function logMessages() {
if [ $# -ne 2 ]; then FatalError "wrong number of arguments"; fi
echo "$1: $2"
}
function output() {
if [ $# -lt 3 ]; then FatalError "wrong number of arguments"; fi
printf "%-3s %-30s %-25s %s\n" $1 $2 $3 $4
}
function checkEterhostIP() {
if [ $# -lt 1 ]; then FatalError "wrong number of arguments"; fi
for ip in $*
do
for eterhost_mask in $Eterhost
do
checkEterhostNetmask $ip $eterhost_mask
if [ $? -eq 0 ]
then
return 1
fi
done
done
return 0
}
function checkEterhostNS() {
if [ $# -ne 1 ]; then FatalError "wrong number of arguments"; fi
if whois $1 | grep -i "ns[1|4].etersoft.ru" &>/dev/null
then
return 1
fi
return 0
}
function checkEterhostNetmask() {
if [ $# -ne 2 ]; then FatalError "wrong number of arguments"; fi
netmask=$(echo $2 | sed "s/\(.*\)\/\(.*\)/\2/g")
if [ "$(ipcalc $1/$netmask | grep Network: | awk '{print $2}')" != "$2" ]
then
return 1
fi
return 0
}
function getExpirationTime() {
if [ $# -ne 1 ]; then FatalError "wrong number of arguments"; fi
echo $(whois $1 | grep -e "\(Expiration Date\|paid-till\)" | sed -e "s/\(Expiration Date\|paid-till\):\(.*\)/\2/g" | awk '{print $1}')
}
function getServerName() {
if [ $# -ne 1 ]; then FatalError "wrong number of arguments"; fi
echo $(grep -i -w ServerName $1 | sed -e "s/^ServerName //g" -e "s/ $//g" -e "s/[\t\n+]//g" | tr "[:upper:]" "[:lower:]")
}
function getUserName() {
if [ $# -ne 1 ]; then FatalError "wrong number of arguments"; fi
echo $(grep -i -w DocumentRoot $1 | sed -e "s/^DocumentRoot \"\/home\/\(.*\)\/www\/\(.*\)\"/\1/g")
}
function getSiteIpByDomain() {
if [ $# -ne 1 ]; then FatalError "wrong number of arguments"; fi
#echo $(resolve $1 2>/dev/null | sed -e "s/^.*: //g")
echo $(dig @8.8.8.8 $1 +short)
}
function OutputResultList() {
((count_total=$count_ok+$count_deleted+$count_not_eter))
echo "-----------------------------------"
echo "----- Список сайтов (host03) ------"
title1="#"
title2="WWW:"
title3="User:"
title4="paid-till:"
index=0
while [ $index -ne 4 ]
do
echo "-----------------------------------"
if [ $index -eq 0 ]; then
echo "1) Рабочие сайты: $count_ok"
SitesArray=("${SitesOK[@]}")
UsersArray=("${UsersOK[@]}")
ExpArray=("${ExpOK[@]}")
fi
if [ $index -eq 1 ]; then
echo "2) Недоступные сайты: $count_deleted"
SitesArray=("${SitesDeleted[@]}")
UsersArray=("${UsersDeleted[@]}")
ExpArray=("${ExpDeleted[@]}")
fi
if [ $index -eq 2 ]; then
echo "3) Не находятся в сети Etersoft: $count_not_eter"
SitesArray=("${SitesNotEter[@]}")
UsersArray=("${UsersNotEter[@]}")
ExpArray=("${ExpNotEter[@]}")
fi
if [ $index -eq 3 ]; then
echo "------------( Ошибки )-------------"
echo "4) NS записи не принадлежат Etersoft: $count_not_eter_ns"
SitesArray=("${SitesNotEterNS[@]}")
UsersArray=("${UsersNotEterNS[@]}")
ExpArray=("${ExpNotEterNS[@]}")
fi
i=0
output $title1 $title2 $title3 $title4
for site in ${SitesArray[@]}
do
user=${UsersArray[$i]}
exp=${ExpArray[$i]}
output $(($i+1)) $site $user $exp
((i++))
done
((index++))
done
echo "-----------------------------------"
echo "Всего проверенных сайтов: $count_total"
}
##
## - functions end
##
Eterhost="91.232.225.0/24 212.176.200.16/28 89.104.102.0/28 87.249.47.40/29"
cd "/etc/httpd2/conf/sites-enabled"
declare -a SitesOK
declare -a SitesDeleted
declare -a SitesNotEter
declare -a SitesNotEterNS
declare -a SitesArray
declare -a UsersOK
declare -a UsersDeleted
declare -a UsersNotEter
declare -a UsersNotEterNS
declare -a UsersArray
declare -a ExpOK
declare -a ExpDeleted
declare -a ExpNotEter
declare -a ExpNotEterNS
declare -a ExpArray
count_total=0
count_ok=0
count_deleted=0
count_not_eter=0
count_not_eter_ns=0
timer &
timer_pid=$!
for file in *.conf
do
servername=$(getServerName $file)
username=$(getUserName $file)
if [ -z "$servername" ]
then
continue
fi
ip=$(getSiteIpByDomain $servername)
expiration=$(getExpirationTime $servername)
if [ -z "$ip" ]
then
#logMessages "$servername" "не отвечает"
SitesDeleted[$count_deleted]=$servername
UsersDeleted[$count_deleted]=$username
ExpDeleted[$count_deleted]=$expiration
((count_deleted++))
continue
fi
checkEterhostIP $ip
if [ $? -eq 0 ]
then
#logMessages "$servername" "сайт не находится в сети Etersoft"
SitesNotEter[$count_not_eter]=$servername
UsersNotEter[$count_not_eter]=$username
ExpNotEter[$count_not_eter]=$expiration
((count_not_eter++))
continue
fi
checkEterhostNS $servername
if [ $? -eq 0 ]
then
#logMessages "$servername" "NS записи не принадлежат Etersoft"
SitesNotEterNS[$count_not_eter_ns]=$servername
UsersNotEterNS[$count_not_eter_ns]=$username
ExpNotEterNS[$count_not_eter_ns]=$expiration
((count_not_eter_ns++))
fi
#logMessages "$servername" "OK"
SitesOK[$count_ok]=$servername
UsersOK[$count_ok]=$username
ExpOK[$count_ok]=$expiration
((count_ok++))
sleep 1
done
kill $timer_pid 2>/dev/null
echo
sleep 1
OutputResultList
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment