亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年08月28日 10:10:54   作者:等你歸去來  
這篇文章主要跟大家介紹了關于shell批量curl接口腳本的簡單實現方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用shell具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

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

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

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

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

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

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

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

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

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

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

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

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

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)            # 分割數據到數組
 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 命令,把錯誤日志和接口返回結果一并帶回,到后續(xù)console及日志存儲
 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

源數據格式參考如下:

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

當讀取的文件格式為空格分隔的文件時,該讀取將發(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

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

如此,便實現了大家都不用手動敲數據,從而在這上面犯錯的可能了。 DBA從數據導出格式化數據,shell腳本直接讀取格式化數據,保留記錄。這才是程序該干的事。

一句話,想辦法偷個懶,這是我們該干的事。

但是應該要注意,當一個接口被腳本跑去執(zhí)行時,你就行考慮并發(fā)問題,以服務器的壓問題了,也不要太相信代碼。做最壞的打算。

curl的命令請參考:https://curl.haxx.se/docs/manpage.html   (你可以搜簡要中文描述,當然)

總結

從前覺得1、2G的日志文件處理是個頭疼的問題,后來發(fā)現 grep, awk, sed, less, salt 等工具組合起來,能讓你從幾十G甚至更多的千軍萬馬文件中,直取要害。這便是linux的厲害之處。

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • shell學習教程獲取命令行參數示例

    shell學習教程獲取命令行參數示例

    這篇文章主要介紹了shell學習中的基礎知識的獲取命令行參數示例,需要的朋友可以參考下
    2014-03-03
  • shell Bash的數組與關聯數組的實現

    shell Bash的數組與關聯數組的實現

    本文主要介紹了shell Bash的數組與關聯數組的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 一個簡單的linux命令 mkdir

    一個簡單的linux命令 mkdir

    這篇文章主要介紹了一個簡單的linux命令mkdir,mkdir 命令用于創(chuàng)建指定名稱的目錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 在 Shell 提示符中顯示 Git 分支名稱的方法

    在 Shell 提示符中顯示 Git 分支名稱的方法

    這篇文章主要介紹了在 Shell 提示符中顯示 Git 分支名稱的方法,本文詳細的講解了解決這個需求的過程,需要的朋友可以參考下
    2015-04-04
  • PXE kickstart自動化部署系統安裝

    PXE kickstart自動化部署系統安裝

    這篇文章主要為大家介紹了PXE kickstart自動化部署系統的過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • centos 設置定時任務執(zhí)行指定腳本的方法

    centos 設置定時任務執(zhí)行指定腳本的方法

    下面小編就為大家?guī)硪黄猚entos 設置定時任務執(zhí)行指定腳本的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 詳解Linux中退出編輯模式的命令

    詳解Linux中退出編輯模式的命令

    這篇文章主要介紹了Linux中退出編輯模式的命令,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • linux shell之文件鎖

    linux shell之文件鎖

    經常在 shell 腳本里要阻止其它進程,比如 msmtp 自帶的mail queue 腳本,這個腳本的互斥做法是不正確的,下面介紹下發(fā)現的三個通過文件達到互斥的正確做法
    2016-08-08
  • shell傳參并將參數傳遞給sql文件的方法

    shell傳參并將參數傳遞給sql文件的方法

    今天小編就為大家分享一篇shell傳參并將參數傳遞給sql文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 一天一個shell命令 linux文本內容操作系列-cut命令詳解

    一天一個shell命令 linux文本內容操作系列-cut命令詳解

    這篇文章主要介紹了一天一個shell命令 linux文本內容操作系列-cut命令詳解,需要的朋友可以參考下
    2016-06-06

最新評論