Какая польза от кода Python в crontab в centos 7 при автоматическом обновлении сертификатов? - PullRequest
0 голосов
/ 28 марта 2019

Я собираюсь установить crontab для автоматического продления сертификата let-encrypt.У меня есть centos7.

Ниже приведена моя команда для crontab.

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 

Я знаю, что certbot renew продлит сертификат до истечения срока его действия.И 0 0,12 * * * - это время cron, этот крон будет работать в полдень и полночь в день.

Какая польза от этой команды python?Просто я не знаю следующую часть cron.

python -c 'import random; import time; time.sleep(random.random() * 3600)'

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Он спит в среднем полчаса, по-видимому, для того, чтобы все боты в мире не могли поразить сервер ровно в тот час, когда им нужно обновление.

Аргументом time.sleep() является числосекунд, и рандомизация выбирает значение от 0 до 3600.

Если бы у вас был Bash, вы могли бы сделать нечто подобное с sleep $((RANDOM/10));но cron задания по определению запускаются /bin/sh, а не Bash.(RANDOM возвращает целое число от 0 до 32767 - правильный делитель будет что-то вроде 9.1; но Bash поддерживает только целочисленную арифметику.)

1 голос
/ 28 марта 2019

random.random() возвращает значение с плавающей точкой от 0 до 1 (исключая). Таким образом, random.random() * 3600 вернет любое значение от 0 до 3600 (исключая), и time.sleep будет бездействовать столько секунд .

В отношении полной команды, если команда python выполнена успешно (&&), будет выполняться certbot renew.

...