СУТЬ скрипта не висеть на кроне центботу, а именно мониторить каждую минуту возможность выпустить сертификат новому сайту ( поскольку не все они после переноса едут со своими ключами, как следствие не доступны по https) Нужно минимизировать простой сайта. Ну и генерить штатным методом.
ЗАДАЧА скрипта составить список сайтов на сервере >
проверить А запись идет ли на данный сервер>
Если да то проверить сертификат >
если меньше 10 дней в запасе то >
запустить проверку сможет ли выпуститься сертификат,
Если да то запустить механизм Bitrix VM для штатной генерации сертификата ( использует не certbot и не умеет -dry--run)
Что пропустил:
есть еще сайты с www и их тоже нужно прогнать по той же схеме в идеале они должны быть в том же массиве, поскольку было бы правельно генерить
-d site.ru -d www.site.ru,
но можно и по отдельности.
Я вижу пока только дважды скопировать скрипт и прогонять второй раз,но мне сдается есть более приемлемый вариант.
Ну и так если у кого есть идеи как сделать его поприличней ;)
#!/bin/bash
clear
# получаем список реальных сайтов на сервере
lsl=`find /etc/httpd/bx/conf -name "bx_ext*" | sed 's/\/etc\/httpd\/bx\/conf\/bx_ext_//g' | sed 's/\.conf//g'`
for variable in $lsl
do
# Пингуем сайты
ping -c 1 "$variable" 2>/dev/null | grep -e $(/sbin/ifconfig | sed -n '2 p' | awk '{print $2}') &> /dev/null && variable_ping_ok=$variable || variable_ping_ok="failed ip"
#и исключаем А записи которых ведут на другой сервер
if [[ $variable_ping_ok != "failed ip" ]]; then
valid_days=$(($(date -d "$(curl -sIv https://$variable_ping_ok |& grep "expire date:" | sed -e 's/\(.*\)expire date: //g')" +%j)-$(date +%j)))
# смотрим сколько дней осталось до конца сертификата, и смотрим больше ли это 10 дней.
if [[ "10" > "$valid_dayb" ]]
then
certbot certonly --dry-run -m letsencrypt@$variable_ping_ok --webroot -w /home/bitrix/sites/$variable_ping_ok -d $variable_ping_ok -d www.$variable_ping_ok &> /dev/null && sudo -u root /opt/webdir/bin/bx-sites -a configure_le --site $variable_ping_o --email le@$variable_ping_o --dns $variable_ping_o -o json
#echo "$variable_ping_ok $valid_days можно выпустить сертификат "
fi
else echo "$variable_ping_ok $valid_days не нужно "
fi
done