真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

shell如何批量curl接口腳本-創(chuàng)新互聯(lián)

這篇文章主要介紹了shell如何批量curl接口腳本,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

員工經(jīng)過(guò)長(zhǎng)期磨合與沉淀,具備了協(xié)作精神,得以通過(guò)團(tuán)隊(duì)的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡(jiǎn)單”。公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號(hào)開發(fā)、電商網(wǎng)站開發(fā),小程序開發(fā),軟件按需制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

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

DBA會(huì)將一些服務(wù)規(guī)則的數(shù)據(jù)導(dǎo)出,然后一條條手動(dòng)去curl某應(yīng)用接口,從而完成相應(yīng)的業(yè)務(wù)要求。

那么問(wèn)題來(lái)了,DBA導(dǎo)出的數(shù)據(jù)是格式化的,要curl的接口也是格式化的,需要的,只是將相應(yīng)的數(shù)據(jù)替換成對(duì)應(yīng)的值即可。注意,不保證所有的命令都能執(zhí)行成功,有可能需要重新跑接口。

很明顯,手動(dòng)一條條地去寫curl命令,然后一條條執(zhí)行,然后觀察結(jié)果,做出判斷,這對(duì)于少數(shù)幾個(gè)數(shù)據(jù)來(lái)說(shuō),是可行的。但是假設(shè),數(shù)據(jù)有幾百條、幾千條幾萬(wàn)條呢,那就不可能人工一條條去搞了吧。因此,shell腳本就該出場(chǎng)了(當(dāng)然了,有同學(xué)說(shuō),我用其他語(yǔ)言也可以啊,甚至說(shuō)我這個(gè)功能寫到代碼里就可以了,然而這些特殊無(wú)意義的代碼,是不需要長(zhǎng)期保留下來(lái)的)。

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

1. 讀取源數(shù)據(jù)文件的內(nèi)容,替換接口的數(shù)據(jù)格式;

2. 執(zhí)行命令,完成業(yè)務(wù)操作;

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

需求很簡(jiǎn)單,不懂語(yǔ)法沒(méi)關(guān)系,查一下嘛。參考代碼如下:

#!/bin/bash
log_file='result.log'
param_file=$1   # 源數(shù)據(jù)在命令行中指定

log_cmd="tee -a $log_file"
i=1
for 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)            # 分割數(shù)據(jù)到數(shù)組
 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 命令,把錯(cuò)誤日志和接口返回結(jié)果一并帶回,到后續(xù)console及日志存儲(chǔ)
 echo `date "+%Y-%m-%d %H:%M:%S"` "end <<===" $curl_cmd | tee -a $log_file
done

echo `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file

源數(shù)據(jù)格式參考如下:

234,201708222394083443,5000
4211,201782937493274932,3000
23,201749379583475934,2000

當(dāng)讀取的文件格式為空格分隔的文件時(shí),該讀取將發(fā)生異常,換成另一種方式讀取行:

#!/bin/bash
log_file='result.log'
param_file=$1


log_cmd="tee -a $log_file"
i=1
while 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_file
done < $param_file

echo `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file

這里有個(gè)技巧,即使用tee命令,既在console上顯示了訪問(wèn)日志,也往文件里寫入了記錄。即有人工觀察,也有日志存儲(chǔ),以備查看。

如此,便實(shí)現(xiàn)了大家都不用手動(dòng)敲數(shù)據(jù),從而在這上面犯錯(cuò)的可能了。 DBA從數(shù)據(jù)導(dǎo)出格式化數(shù)據(jù),shell腳本直接讀取格式化數(shù)據(jù),保留記錄。這才是程序該干的事。

一句話,想辦法偷個(gè)懶,這是我們?cè)摳傻氖隆?/p>

但是應(yīng)該要注意,當(dāng)一個(gè)接口被腳本跑去執(zhí)行時(shí),你就行考慮并發(fā)問(wèn)題,以服務(wù)器的壓?jiǎn)栴}了,也不要太相信代碼。做最壞的打算。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“shell如何批量curl接口腳本”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


分享名稱:shell如何批量curl接口腳本-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://weahome.cn/article/djpohs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部