shell的簡單批量curl介面指令碼

來源:互聯網
上載者:User

標籤:程式   ref   style   搜尋   uid   資料   bsp   不用   href   

  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

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

  如此,便實現了大家都不用手動敲資料,從而在這上面犯錯的可能了。 DBA從資料匯出格式化資料,shell指令碼直接讀取格式化資料,保留記錄。這才是程式該乾的事。

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

  但是應該要注意,當一個介面被指令碼跑去執行時,你就行考慮並發問題,以伺服器的壓問題了,也不要太相信代碼。做最壞的打算。

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

 

  從前,我覺得1、2G的記錄檔處理是個頭疼的問題,但是後來發現 grep, awk, sed, less, salt 等工具組合起來,能讓你從幾十G甚至更多的千軍萬馬檔案中,直取要害。這便是linux的厲害之處。

 

shell的簡單批量curl介面指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.