在 APP 的插件中,有一个展示产品购买链接的地方。但是商品的购买链接直接存储于数据库,如果商城的商品下架后,并不会主动告知。那么如何定时主动查询链接是否还有效呢?
下面我们使用 sh 脚本来实现该需求。
首先,需要对商品链接进行访问,然后对获取的信息进行提取,进行条件判断,最后通过短信提醒。具体思路如下图所示:

脚本实现
以下是一个 Bash 脚本,它的主要目的是检查给定 URL 中的商品是否下架,并在下架时通过短信通知用户。具体步骤如下:
urls=(
'https://m.midea.cn/detail/index?itemid=1000000000400693399023&icid=245189'
)
for url in "${urls[@]}"; do
buyText=$(curl -s "$url" | grep 'buyText')
regex=']*)"'
if [[ $buyText =~ $regex ]]; then
data_state_text="${BASH_REMATCH[1]}"
echo "$data_state_text"
else
echo "data-state-text not found in buyText"
fi
# 获取输入参数
phone="1867*****07"
sendMessage="{"phone":"$phone","content":"购买商品已下架:$url"}"
# 比较字符串是否相等
if [ "$data_state_text" = "商品已下架" ]; then
# 发送POST请求
curl -X POST -d "$sendMessage" http://push-server-prod.aiicidea.com:8807/sms/send -H 'Content-Type:application/json'
fi
unset data_state_text
done
代码备注如下:
定义一个包含要检查的 URL 的数组。 循环遍历 URL 数组。 使用 curl 命令获取 URL 的 HTML 内容,并使用 grep 命令查找包含 “buyText” 的行。 使用正则表达式从 buyText 中提取 “data-state-text” 属性的值。 如果找到了 data-state-text 属性,则将其存储在变量 $data_state_text 中。 如果未找到 data-state-text 属性,则打印一条消息。 定义一个变量 $phone,用于存储要发送短信的电话号码。 定义一个变量 $sendMessage,用于存储要发送的短信内容。 如果 data_state_text 的值等于 “商品已下架”,则使用 curl 命令向短信推送服务器发送 POST 请求,并将 $sendMessage 作为请求体。 在每次循环结束时,清除 $data_state_text 变量的值,以便下一次循环时重新设置它。
为了能在堡垒机上定时执行该脚本,使用了crontab命令
# 打开终端,并使用 root 用户身份登录到该服务器。
# 执行以下命令:crontab -e,打开当前用户的定时任务配置文件。
# 在文件末尾添加以下内容:0 9 * * * /root/script/gs_linkage_buy_link_job.sh,其中 /root/script/gs_linkage_buy_link_job.sh 是您要执行的脚本的路径。
# 保存并退出文件。
# 确认定时任务已经添加成功,您可以使用命令 crontab -l 来查看当前用户的定时任务列表。
0 9 * * * /root/script/gs_linkage_buy_link_job.sh
上述命令将在每天早上 9 点自动执行脚本。
以上是用sh脚本实现了商品下架的提醒,其实在应用代码中也能实现,但是使用脚本可以更简单,更方便。
原文始发于微信公众号(CodeJames):如何提醒商品下架?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148160.html