首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为cronjobs变量传递字符转义反斜杠和双引号

为cronjobs变量传递字符转义反斜杠和双引号
EN

Stack Overflow用户
提问于 2016-10-13 17:22:01
回答 1查看 782关注 0票数 0

我正在用salt堆栈编写一个sls模板,并试图正确地编写一个cron作业条目,但是我无法这样做,因为编译器总是会因为语法问题而哭泣,因为转义似乎不像我想的那样有效。我也需要cron命令中的转义反斜杠,因为否则cronjob没有正确地使用格式字符。

这是我的模板中的代码

代码语言:javascript
复制
{{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条目应该如下所示

代码语言:javascript
复制
 * 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“

我已经尝试了一些方法,但我认为我目前无法解决这个问题,因为很多脑死亡:-(也许有人知道一个解决方案,我也查了金甲医生逃跑麻生太郎……但我现在很无助

尝试:

代码语言:javascript
复制
'`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 

同时我也试过这个

代码语言:javascript
复制
"{{ 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'}}"

这也行不通。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中的行看起来与我所需要的完全一样:

代码语言:javascript
复制
.......`date "+\%Y_\%m_\%d-\%H_\%M"`..... .zip

结果在我的备份文件夹:instance-odoo_db-2016_10_19-22_00_daily.zip

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40027274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档