国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

shell批量curl接口腳本的簡單實現方法

2019-10-26 18:54:44
字體:
來源:轉載
供稿:網友

前言

相信大家應該都有所體會,shell腳本可以說作用非常大,在服務器領域,用shell操作事務可比手動點擊要方便快捷得多了。雖然只是文字界面,但是其強大的處理功能,會讓各種操作超乎想象。而且,也可以將這些習慣移植到日常的工作當中,提升辦事效率。

其實shell語法很簡單,基本上就是綜合一下在命令行下,一個個的命令集合,然后就組成了shell腳本。當然了,不懂語法的,百度搜索一下就好了嘛,畢竟,重要的是思想而非語法。

最近,剛接一需求,如下:

DBA會將一些服務規則的數據導出,然后一條條手動去curl某應用接口,從而完成相應的業務要求。

那么問題來了,DBA導出的數據是格式化的,要curl的接口也是格式化的,需要的,只是將相應的數據替換成對應的值即可。注意,不保證所有的命令都能執行成功,有可能需要重新跑接口。

很明顯,手動一條條地去寫curl命令,然后一條條執行,然后觀察結果,做出判斷,這對于少數幾個數據來說,是可行的。但是假設,數據有幾百條、幾千條幾萬條呢,那就不可能人工一條條去搞了吧。因此,shell腳本就該出場了(當然了,有同學說,我用其他語言也可以啊,甚至說我這個功能寫到代碼里就可以了,然而這些特殊無意義的代碼,是不需要長期保留下來的)。

該shell腳本只要做好三件事就行了:

  1. 讀取源數據文件的內容,替換接口的數據格式;

  2. 執行命令,完成業務操作;

  3. 記錄完整的日志,以便后期排查對比;

需求很簡單,不懂語法沒關系,查一下嘛。參考代碼如下:

#!/bin/bashlog_file='result.log'param_file=$1   # 源數據在命令行中指定log_cmd="tee -a $log_file"i=1for line in `cat $param_file`;do echo "read line" $i ":" $line | tee -a $log_file  let "i=$i+1" OLD_IFS=$IFS;IFS=","; arr=($line)            # 分割數據到數組 IFS=$OLD_IFS; curl_cmd="curl -d 'uId=${arr[0]}&bid=${arr[1]}&bA=${arr[2]}&to=6&bP=30&fddays=5' http://localhost:8080/mi/api/ss/1.0.1/co/apply" echo `date "+%Y-%m-%d %H:%M:%S"` "start ===>> " $curl_cmd | tee -a $log_file eval "$curl_cmd 2>&1" | tee -a $log_file     # 使用 eval 命令,把錯誤日志和接口返回結果一并帶回,到后續console及日志存儲 echo `date "+%Y-%m-%d %H:%M:%S"` "end <<===" $curl_cmd | tee -a $log_filedoneecho `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file

源數據格式參考如下:

234,201708222394083443,50004211,201782937493274932,300023,201749379583475934,2000

當讀取的文件格式為空格分隔的文件時,該讀取將發生異常,換成另一種方式讀取行:

#!/bin/bashlog_file='result.log'param_file=$1log_cmd="tee -a $log_file"i=1while read line;do echo "read line" $i ":" $line | tee -a $log_file  let "i=$i+1" arr=($line) curl_cmd="curl -d 'uId=${arr[0]}&bid=${arr[1]}&bt=${arr[2]}&toBorrowType=6&borrowPeriod=30&fddays=5' http://localhost/mi/c/1.0.1/c/n" echo `date "+%Y-%m-%d %H:%M:%S"` "start ===>> " $curl_cmd | tee -a $log_file #`$curl_cmd` 2>&1 $log_file | tee -a $log_file eval "$curl_cmd 2>&1" | tee -a $log_file  echo `date "+%Y-%m-%d %H:%M:%S"` "end <<===" $curl_cmd | tee -a $log_filedone < $param_fileecho `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 齐河县| 平江县| 双桥区| 东至县| 德令哈市| 平阳县| 沛县| 无为县| 和顺县| 淅川县| 大方县| 沂源县| 永平县| 吴堡县| 长沙市| 麦盖提县| 鄂托克旗| 峨山| 建瓯市| 南昌县| 沙田区| 田林县| 北川| 定边县| 海伦市| 利辛县| 大竹县| 通许县| 泗洪县| 广安市| 原平市| 锡林浩特市| 成都市| 宜州市| 苏尼特右旗| 琼中| 原阳县| 西吉县| 日照市| 枣强县| 山东省|