通过将脚本作为cronjob运行来续订证书

时间:2017-08-27 11:48:29

标签: shell ubuntu cron

我需要续订我的Let的加密证书,我喜欢这样:

$ sudo docker stop nginx
$ sudo docker run -it --rm -p 443:443 --name certbot -v /etc/letsencrypt:/etc/letsencrypt -v /var/log/letsencrypt:/var/log/letsencrypt quay.io/letsencrypt/letsencrypt:latest renew
$ sudo docker start nginx

我已经定期运行这些命令,所以我想创建一个cronjob。到目前为止,我创建了这个文件:

$ sudo nano /opt/letsencrypt.sh 

有了这个内容:

#!/bin/sh
sudo docker stop nginx
sudo docker run -it --rm -p 443:443 --name certbot -v /etc/letsencrypt:/etc/letsencrypt -v /var/log/letsencrypt:/var/log/letsencrypt quay.io/letsencrypt/letsencrypt:latest renew
sudo docker start nginx

要将此文件添加到我所做的cronjobs中:

$ sudo nano /etc/crontab

5 8 * * 6   root /opt/letsencrypt.sh

但一切都没有发生。没有错误,没有行动。我做错了什么?

如果可以记录这份工作会很棒,所以我可以看到它何时运行......

2 个答案:

答案 0 :(得分:0)

您是否已将脚本设置为可执行文件?

如果没有,请尝试chmod +x /opt/letsencrypt.sh

答案 1 :(得分:0)

确保在reader = open("ping.log", 'r') # not 'w' if you are reading try: # Do things with reader here # Basically copy-paste the stuff which was inside the with statement finally: reader.close() 内运行-it时不使用docker run

错误:

crontab

正确:

0 3 * * * docker run -it --rm --name certbot ...

您还可以将输出记录到日志文件中:

0 3 * * * docker run --rm --name certbot ...

这会将标准输出0 3 * * * docker run --rm --name certbot ... > /tmp/cronjob.log 2>&1 和错误[1]>都记录到该文件。