我最近写个每天自动加密文件的shell脚本时才发现,平时在命令行下直接可用的gpg加密语句放到脚本中,再加入到crontab中定时执行可能会失败。研究了下才发现,想在crontab中调用gpg加密还需要两个额外的参数才可以。
如果是平时在命令行下加密文件,例如给邮件名为test@knktc.com的公钥用户加密一个testfile.txt的文件,那我会使用以下的命令:
gpg -ear test@knktc.com –trust-model always –yes .testfile.txt
本来以为这样的命令写入脚本后再加入到crontab中是没有什么问题的,但几分钟后我却发现加入到crontab中的脚本没有执行gpg加密的功能。对此,上网上查了些资料,发现如果想让cron服务来执行gpg的加密,还需要两个参数: –no-tty和—homedir, 修改完成后的命令应该是:
gpg –homedir=/root/.gnupg –no-tty -ear test@knktc.com –trust-model always –yes .testfile.txt
这样的话,cron在执行定时的加密任务时就可以找到存放公钥的目录,同时也可以在cron自己的环境下完成加密任务了。