自动续订证书时,centos 7中crontab中python代码的用途是什么?

时间:2019-03-28 09:11:10

标签: python cron centos7 certbot

我将设置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时间,该cron每天每天中午和午夜运行。

此python命令的用途是什么? 只是我不知道cron的一部分。

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

2 个答案:

答案 0 :(得分:1)

它平均睡眠半小时,以防止世界上所有的机器人在需要更新的那一小时内准确地攻击服务器。

time.sleep()的参数为秒数,并且随机选择0到3600之间的值。

如果您拥有Bash,则可以使用sleep $((RANDOM/10))做类似的事情;但是cron作业按定义运行/bin/sh,而不是Bash。 ({RANDOM返回0到32767之间的整数-适当的除数约为9.1;但Bash仅支持整数算术。)

答案 1 :(得分:1)

random.random()返回0到1之间的浮点数(不包括)。因此,random.random() * 3600将返回0到3600之间的任何值(不包括),而time.sleep将休眠那么多 seconds

在执行完整命令时,如果python命令成功(&&),将运行certbot renew