Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

shell妙用 —— 发post请求刷新CDN缓存 #11

Open
wall-wxk opened this issue Jul 25, 2018 · 0 comments
Open

shell妙用 —— 发post请求刷新CDN缓存 #11

wall-wxk opened this issue Jul 25, 2018 · 0 comments

Comments

@wall-wxk
Copy link
Owner

wall-wxk commented Jul 25, 2018

前言

shell 是个好东西,建议学习下:)

本文将讲解如何用shell开发自动化脚本刷新CDN缓存。
为什么会做这个小脚本,根本原因还是懒...
公司的运维,很贴心开发了一个form表单的网页,专门给前端同学刷新CDN缓存。虽然可以满足要求,但是每次上一次项目,就得打开该网页,输入SecretKey和需要刷新的URL地址,很心累。
有痛点,那么就尝试解决它!

一、shell脚本

#!bin/bash
# 刷新cdn

urls="https://***.com/page1;\
https://***.com/page2;"

curl \
 -X POST \
 --data-urlencode "qq=00" \
 --data-urlencode "ws=01" \
 --data-urlencode "SecretKey=***" \
 --data-urlencode "flushurl=${urls}" \
 http://127.0.0.1/

二、脚本解析

凡是在客户端可以跑的命令,都可以用shell集成,做自动化。

2.1 用curl发http请求

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。

主要了解两种方式:get和post。

  • get 请求
curl example.com/a.html?data=xxx
  • post 请求
curl -X POST --data "data=xxx" example.com/form.cgi
  • post 请求(encode参数)
curl -X POST--data-urlencode "date=April" example.com/form.cgi

2.2 集成到shell脚本,自动化

#!bin/bash
curl  -X POST --data-urlencode "qq=00" --data-urlencode "ws=01" --data-urlencode "SecretKey=***" --data-urlencode "flushurl=https://***.com/page1;https://***.com/page2;" http://127.0.0.1/

要实现的目的基本达到,但是代码不友好,修改不方便。

2.3 优化代码

#!bin/bash

urls="https://***.com/page1;\
https://***.com/page2;"

curl \
 -X POST \
 --data-urlencode "qq=00" \
 --data-urlencode "ws=01" \
 --data-urlencode "SecretKey=***" \
 --data-urlencode "flushurl=${urls}" \
 http://127.0.0.1/
  • 将命令的每个参数进行换行,用反斜杠续行
  • 经常修改的url独立成变量

三、执行自动化脚本

  • window环境下,可用Git Bash工具跑shell
  • linux环境,直接在终端跑就可以了

命令例子:bash cdn.sh

后记

有前端同事,用commander+axios做了一个刷新CDN工具,但是,没我这个来得简单粗爆:)
shell就是这么好用~

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant