我正在运行 Ubuntu 16.04 LTS
我有一个关于每月一次从 crontab 使用 OpenSSL 生成 CRL 文件的问题。
我有一个名为“gen-crl”的脚本,我可以从 /opt/vpn/openvpn-ca 运行,但 gen-crl 脚本位于其他地方,因为我为它创建了一个软符号链接:
lrwxrwxrwx 1 root root 27 May 17 22:48 gen-crl -> /usr/share/easy-rsa/gen-crl
gen-crl 脚本如下所示:
#!/bin/sh
# revoke a certificate, regenerate CRL,
# and verify revocation
CRL="crl.pem"
if [ "$KEY_DIR" ]; then
cd "$KEY_DIR"
# set defaults
export KEY_CN=""
export KEY_OU=""
export KEY_NAME=""
# required due to hack in openssl.cnf that supports Subject Alternative Names
export KEY_ALTNAMES=""
# generate a new CRL -- try to be compatible with
# intermediate PKIs
$OPENSSL ca -gencrl -out "$CRL" -config "$KEY_CONFIG"
$OPENSSL crl -text -in "$CRL"
else
echo 'Please source the vars script first (i.e. "source ./vars")'
echo 'Make sure you have edited it to reflect your configuration.'
fi
仅当我在运行 gen-crl 脚本之前输入“source vars”时,该脚本才可运行。
现在我想从 cronjob 运行这个脚本,但现在这对我来说变得很棘手,因为在运行 gen-crl 脚本之前必须使用“源变量”。
我已经在 crontab 中尝试过这个作为测试,然后重新加载了 cron 守护进程(服务 cron reload):
*/1 * * * * root source /opt/vpn/openvpn-ca/vars; /opt/vpn/openvpn-ca/gen-crl
但这不起作用,因为我可以通过 crl.pem 的时间戳看到它没有改变。
我怎样才能通过使用 source 命令从 crontab 运行这个 gen-crl 脚本?
答案1
@steeldriver ;你是对的;我现在让它工作了。
我尝试在 crontab 中执行此操作:
*/1 * * * * root . /opt/vpn/openvpn-ca/vars && /opt/vpn/openvpn-ca/gen-crl
但这不起作用。所以我generate-crl
在中创建了一个文件/etc/cron.daily
并chmod 755
相应地执行了它。然后我将其放入generate-crl
文件中:
#!/bin/sh
cd /opt/vpn/openvpn-ca
. /opt/vpn/openvpn-ca/vars && /opt/vpn/openvpn-ca/gen-crl
现在它正在工作。谢谢你给我指明正确的方向!