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

May*_*iya 2 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 
Run Code Online (Sandbox Code Playgroud)

我知道唯一的事情是certbot renew 可以在到期日之前更新证书。这0 0,12 * * *是一个cron时间,该cron每天每天中午和午夜运行。

这个python命令有什么用?简而言之,我不了解cron的一部分。

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

tri*_*eee 5

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

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

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

  • @emeraldhieu此cron作业每天运行两次,仅在证书即将过期时才更新您的证书。如果证书的有效期限还不到30天,则该证书将被视为即将过期。证书的颁发期限为90天。因此,在正常情况下,您的证书每60天更新一次。如果您有30天的时间进行更新,则可能的小时延迟并不重要。 (3认同)