shell妙用 —— 發post請求重新整理CDN快取

我是leon發表於2018-07-25

前言

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就是這麼好用~

參考


喜歡我文章的朋友,可以通過以下方式關注我:

相關文章