用Crontab连接文件输出文本

时间:2018-06-19 17:21:53

标签: linux cron concatenation cat cron-task

我已经成功Using CRON jobs to visit url?跟进了这个问题,以维护以下Cron任务:

*/30 * * * * wget -O - https://example.com/operation/lazy-actions?lt=SOME_ACCESS_TOKEN_HERE >/dev/null 2>&1

上述Cron任务运行正常,每30分钟定期访问该URL。

但是,访问令牌记录在/home/myaccount/www/site/aToken.txt中的文本文件中,aToken文件是非常简单的一行文本文件,仅包含令牌字符串。

我尝试读取其内容,并使用cat将其传递给crontab命令,如下所示:

*/30 * * * * wget -O - https://example.com/operation/lazy-actions?lt=|cat /home/myaccount/www/site/aToken.txt| >/dev/null 2>&1

但是,上述解决方案无法运行cronjob。

我在Ubuntu 16.04上使用crontab -e和nano编辑了Cronjobs

2 个答案:

答案 0 :(得分:1)

这是一种快速的解决方案,无需复杂的单线即可实现您想要的一切:

在您的myaccount中创建此文件-如果您只想记住它放在哪里,也可以将其放入bin目录中,以便可以从CRON进行调用。另外,请确保用户有权读取/写入sh文件所在的目录

wget.sh

#!/bin/bash

#simple cd -- change directory
cd /home/myaccount/www/site/  

#grab token into variable aToken
aToken=`cat aToken.txt`  

#simple cd -- move to wget directory
cd /wherever/you/want/the/wget/results/saved 

#Notice the $ -- This is how we let the shell know that aToken is a variable = $aToken
#wget -O - https://example.com/operation/lazy-actions?lt=$aToken
wget -q -nv -O /tmp/wget.txt https://example.com/operation/lazy-actions?lt=$aToken >/dev/null 2>/dev/null

# You can writle logs etc etc afterward here.  IE
echo "Job was successful" >> /dir/to/logs/success.log

然后就像您已经在做的那样,用您的CRON调用此文件。

*/30 * * * * sh /home/myaccount/www/site/wget.sh >/dev/null 2>&1

答案 1 :(得分:1)

基于Concatenate in bash the output of two commands without newline character这个问题,我得到了以下简单的解决方案:

wget -O - https://example.com/operation/lazy-actions?lt="$(cat /home/myaccount/www/site/aToken.txt)" >/dev/null 2>&1

它能够读取文本文件的内容,然后回显到命令流。