我正在saltstack中编写一个sls模板,并试图正确编写一个cronjob条目,但我无法这样做因为编译器总是在语法问题上哭泣,因为似乎逃避不能像我想的那样工作。 我需要在cron命令中转义反斜杠,否则cronjob不会正确使用格式charackters。
这是我模板中的代码
{{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文件编译我的代码,但是 找到''in“”,第124行,第154栏: ... ckupdir / dbname / dbname-odoo_db -
date"+\%Y_\%m_\%d-\%H_\%M"
_ daily.zip“
我已经尝试了一些方法,但我想我现在无法解决它已经脑死亡了:-(也许有人知道一个解决方案我也检查了jinja docs逃避aso ...但我无助于那一刻
尝试:
'`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'}}"
这不起作用
答案 0 :(得分:0)
好的我用这个解决方案解决了问题,也许这不是最好的方法,但它解决了我的问题....
如果有人读到这篇文章,我会对{% raw %} .... {% endraw % }
感兴趣
不起作用
解决方案:
“{{online_basedir}} / online_tools / db-tools.py -b {{settings.port}} -s {{settings.online_master_pw}} -x {{instance +'.domainname.net'}}备份-d {{instance}} -f {{'/ opt / onlinebackupdir /'+ instance +'/'+ instance +'-odoo_db-'+'date \\\"+\\\\%Y_\\\\%m_\\\\%d-\\\\%H_\\\\%M\\\"
'+'_ weekly.zip'}}“< / p>
现在crontab中的行看起来就像我需要的那样:
.......`date "+\%Y_\%m_\%d-\%H_\%M"`..... .zip
在我的BACKUP文件夹中结果:instance-odoo_db-2016_10_19-22_00_daily.zip