Есть VPS (Ubuntu 14.04) сервер который находиться за CloudFlare.
Задача на VPS сервере в случае нагрузки на CPU активировать Режим
после снижение нагрузки вернуть защиту в обратное состояние
то есть отключить.
И так есть скрипт для API CloudFlare работает через Curl
который дергаем по крону
crontab -e
*/1 * * * * /root/DDoS/Cloudflare.sh 0 # check every 1 minutes if protection is not enabled
*/20 * * * * /root/DDoS/Cloudflare.sh 1 # check every 20 minutes if protection is enabled
СКРИПТ
#!/bin/bash
# Load average | $1 = 1min, $2 = 5min, $3 = 15min
loadavg=$(cat /proc/loadavg|awk '{printf "%f", $1}')
# Max load is 10, you can modify if you want more than 10
maxload=10
# Configuration API Cloudflare
api_key=YOUR_API_KEY
email=YOUR_EMAIL
zone_id=ZONE_ID_DOMAIN
attacking=./attacking
# create file attacking if doesn't exist
if [ ! -e $attacking ];
then
echo 0 > $attacking
fi
hasattack=$(cat $attacking)
if [ $(echo "$loadavg > $maxload"|bc) -eq 1 ];
then
if [[ $hasattack = 0 && $1 = 0 ]];
then
# Enable Protection
echo 1 > $attacking
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data '{"value":"under_attack"}'
fi
else
if [[ $hasattack = 1 && $1 = 1 ]];
then
# Disable Protection
echo 0 > $attacking
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data '{"value":"low"}'
fi
fi
exit 0
Если я Правильно понял то если загрузка ЦП будет более 10% тогда мы переходим в режим Under Attack!
если же ЦП разгружен ниже 10% то через 20 минут мы вернем защиту в прежнее состояние.
скрипт почему то не работает.
нагружал процессор до 10% + и более
но почему то код не срабатывает и также не переводит в параметр low (даже если нет нагрузки на ЦП)
Хотелось бы сразу разобрать код:
cat /proc/loadavg|awk '{printf "%f", $1}'
что это за параметр это нагрузка на ЦП?
maxload=10 получается 10% ?
сами API точно работает так как побывал дергать кодом:
тогда срабатывает UnderAttack!
#!/bin/bash
# Configuration API Cloudflare
api_key=YOUR_API_KEY
email=YOUR_EMAIL
zone_id=ZONE_ID_DOMAIN
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" \
-H "X-Auth-Email: $email" \
-H "X-Auth-Key: $api_key" \
-H "Content-Type: application/json" \
--data '{"value":"under_attack"}'
fi
С полного скрипта не срабатывает не Первый параметр не второй в случае если нет нагрузки:
Где тут Ошибка помогите разобраться.