我正在用salt堆栈编写一个sls模板,并试图正确地编写一个cron作业条目,但是我无法这样做,因为编译器总是会因为语法问题而哭泣,因为转义似乎不像我想的那样有效。我也需要cron命令中的转义反斜杠,因为否则cronjob没有正确地使用格式字符。
这是我的模板中的代码
{{instance}} cron-entry-for-backup-daily:
cron.present:
- user: root
- name: "{{ online_basedir }}/online_tools/db-tools.py -b {{ settings.port }} -s {{ settings.online_master }} -x {{ instance + '.domain.name' }} backup -d {{ instance }} -f {{ '/opt/onlinebackupdir/' + instance + '/' + instance + '-odoo_db-' + '`date' + '\"' + '+\%Y_\%m_\%d-\%H_\%M' + '\"' + '`' + '_daily.zip'}}"
- minute: '*'
- hour: '22'
- daymonth: '*'
- month: '*'
- dayweek: '1-6'
- identifier: {{ instance + '_dailybackup' }}
- comment: 'Installed via Salt'cronjob条目应该如下所示
* 22 * * 1-6 /opt/online/online_tools/db-tools.py -b 63000 -s xyz123 -x sub.domain.name backup -d dbname -f /opt/onlinebackupdir/dbname/dbname-odoo_db-`date "+\%Y_\%m_\%d-\%H_\%M"`_daily.zip如果我在命令行上执行这个命令行,如果我通过cron执行它,它就会工作.
错误消息:
我无法从预期的sls文件编译我的代码,但在"“中找到了'‘,第124行,第154栏:.ckupdir/dbname/dbname-odoo_db-
date"+\%Y_\%m_\%d-\%H_\%M"_daily.zip“
我已经尝试了一些方法,但我认为我目前无法解决这个问题,因为很多脑死亡:-(也许有人知道一个解决方案,我也查了金甲医生逃跑麻生太郎……但我现在很无助
尝试:
'`date +\%Y_\%m_\%d-\%H_\%M`' --> error
'`date "+\%Y_\%m_\%d-\%H_\%M"`' --> error
'`date \"+\%Y_\%m_\%d-\%H_\%M\"`' --> error
'`date '+'\%Y_\%m_\%d-\%H_\%M`' --> error
'`date '+\%Y_\%m_\%d-\%H_\%M'`' --> error
'`date \"+"\%Y_\%m_\%d-\%H_\%M"\"'`' --> error
'`date' + '"' + '+\%Y_\%m_\%d-\%H_\%M' + '"' + '`' --> error
'`date' + '"' + '+\%Y_\%m_\%d-\%H_\%M' + '"' + '`' --> error
'`date +%Y_%m_%d-%H%M`' --> compiled and worked in command line but not inside crontab % needs to be escaped 同时我也试过这个
"{{ online_basedir }}/online_tools/db-tools.py -b {{ settings.port }} -s {{ settings.online_master_pw }} -x {{ instance + '.domainname.net' }} backup -d {{ instance }} -f {{ '/opt/onlinebackupdir/' + instance + '/' + instance + '-odoo_db-' }} + {% raw %} `date "+\%Y_\%m_\%d-\%H_\%M"` {% endraw %} + {{'_daily.zip'}}"
"{{ online_basedir }}/online_tools/db-tools.py -b {{ settings.port }} -s {{ settings.online_master_pw }} -x {{ instance + '.domainname.net' }} backup -d {{ instance }} -f {{ '/opt/onlinebackupdir/' + instance + '/' + instance + '-odoo_db-' + {% raw %} `date "+\%Y_\%m_\%d-\%H_\%M"` {% endraw %} + '_daily.zip'}}"这也行不通。
发布于 2016-10-20 11:56:43
好的,我用这个解决了问题,也许这不是最好的方法,但它解决了我的问题.如果有人读了这篇文章,我会对为什么{% raw %} .... {% endraw % }不起作用感兴趣
解决办法:
"{{ online_basedir }/onlinebackupdir/db-tools.py -b { settings.port }} -s { settings.online_master_pw }} -x {settings.online_master_pw+ '.domainname.net‘} backup -d {.domainname.net} -f {{ '/opt/onlinebackupdir/’+ instance + '/‘+ instance +’-odoo_db-+ 'date \\\"+\\\\%Y_\\\\%m_\\\\%d-\\\\%H_\\\\%M\\\"‘+’_weekly.zip‘}“
现在,crontab中的行看起来与我所需要的完全一样:
.......`date "+\%Y_\%m_\%d-\%H_\%M"`..... .zip结果在我的备份文件夹:instance-odoo_db-2016_10_19-22_00_daily.zip
https://stackoverflow.com/questions/40027274
复制相似问题