如何使用外部字符串在cron作业中运行命令

时间:2014-10-09 09:20:04

标签: linux terminal cron centos

我每个月都需要运行玉米工作来更新软件许可证。

许可证已在远程服务器上的文本文件中准备就绪(例如:http://codebox.ir/soft/license.txt)并每月更新。

license.txt内容示例" tev3vv5-v343"。

我想获取许可证并输入一些命令:

# update xxxx-xxxx

我该怎么做?

  • CentOs 6.4

1 个答案:

答案 0 :(得分:2)

编写一个从远程服务器

获取文件的脚本
wget http://codebox.ir/soft/license.txt

然后从该文本文件中获取密钥并将其传递到updatecommand

update `cat license.txt`

注意Backticks,所以你的脚本看起来像这样

#!/bin/sh

#
# This script fetches and updates the licensefile
#
wget http://codebox.ir/soft/license.txt;
update `cat license.txt`;

使文件可执行

chmod +x updateLicense.sh

并将其放入您的crontab

cd /path/to/script;./updateLicense.sh

或保持紧凑,尽管我会先检查文件是否符合预期的格式。

#!/bin/sh

#
# This script fetches and updates the licensefile
#

update `wget http://codebox.ir/soft/license.txt`;

并检查fetch是否成功

#!/bin/sh

#
# This script fetches and updates the licensefile
#

URL = http://codebox.ir/soft/license.txt

wget_output=$(wget -q "$URL")
if [ $? -ne 0 ]; then
update $wget_output
fi

不,你可以进一步发展,我建议在更新之前检查密钥的格式

#!/bin/sh

#
# This script fetches and updates the licensefile
#

# Define URL
URL = http://codebox.ir/soft/license.txt

# Fetch content
wget_output=$(wget -q "$URL")
# Check if fetch suceeded $? is the returnvalue of wget in this case
if [ $? -ne 0 ]; then
   # Use mad Regexskillz to check format of licensekey and update if matched
   if [[ $wget_output == [a-z0-9]+-[a-z0-9]+ ]] ; then update $wget_output; fi
fi

我还会返回一些值以进一步提高脚本的质量,同时我也会将url和正则表达式传递给函数以保持脚本可重用,但这是一个品味问题<\ n / p>