shell的简单批量curl接口脚本
shell脚本可以说作用非常大,在服务器领域,用shell操作事务可比手动点击要方便快捷得多了。虽然只是文字界面,但是其强大的处理功能,会让各种操作超乎想象。而且,也可以将这些习惯移植到日常的工作当中,提升办事效率。 其实shell语法很简单,基本上就是综合一下在命令行下,一个个的命令集合,然后就组成了shell脚本。当然了,不懂语法的,百度搜索一下就好了嘛,毕竟,重要的是思想而非语法。 最近,刚接一需求,如下:? DBA会将一些服务规则的数据导出,然后一条条手动去curl某应用接口,从而完成相应的业务要求。 那么问题来了,DBA导出的数据是格式化的,要curl的接口也是格式化的,需要的,只是将相应的数据替换成对应的值即可。注意,不保证所有的命令都能执行成功,有可能需要重新跑接口。 很明显,手动一条条地去写curl命令,然后一条条执行,然后观察结果,做出判断,这对于少数几个数据来说,是可行的。但是假设,数据有几百条、几千条几万条呢,那就不可能人工一条条去搞了吧。因此,shell脚本就该出场了(当然了,有同学说,我用其他语言也可以啊,甚至说我这个功能写到代码里就可以了,然而这些特殊无意义的代码,是不需要长期保留下来的)。 该shell脚本只要做好三件事就行了: 1. 读取源数据文件的内容,替换接口的数据格式; 2. 执行命令,完成业务操作; 3. 记录完整的日志,以便后期排查对比; 需求很简单,不懂语法没关系,查一下嘛。参考代码如下: #!/bin/==$log_cmd=<span style="color: #800000">"<span style="color: #800000">tee -a $log_file<span style="color: #800000">"<span style="color: #000000">
i=<span style="color: #800080">1 <span style="color: #0000ff">for line <span style="color: #0000ff">in <span style="color: #0000ff">cat</span><span style="color: #000000"> $param_file ;<span style="color: #0000ff">do <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">read line<span style="color: #800000">" $i <span style="color: #800000">"<span style="color: #800000">:<span style="color: #800000">" $line | <span style="color: #0000ff">tee -<span style="color: #000000">a $log_file let <span style="color: #800000">"<span style="color: #800000">i=$i+1<span style="color: #800000">"<span style="color: #000000"> OLD_IFS=$IFS;IFS=<span style="color: #800000">"<span style="color: #800000">,<span style="color: #800000">"<span style="color: #000000">; arr=<span style="color: #000000">($line) # 分割数据到数组 IFS=<span style="color: #000000">$OLD_IFS; curl_cmd=<span style="color: #800000">"<span style="color: #800000">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<span style="color: #800000">" <span style="color: #0000ff">echo <span style="color: #0000ff">date</span> <span style="color: #800000">"</span><span style="color: #800000">+%Y-%m-%d %H:%M:%S</span><span style="color: #800000">"</span> <span style="color: #800000">"<span style="color: #800000">start ===>> <span style="color: #800000">" $curl_cmd | <span style="color: #0000ff">tee -<span style="color: #000000">a $log_fileeval <span style="color: #800000">"<span style="color: #800000">$curl_cmd 2>&1<span style="color: #800000">" | <span style="color: #0000ff">tee -<span style="color: #000000">a $log_file # 使用 eval 命令,把错误日志和接口返回结果一并带回,到后续console及日志存储 <span style="color: #0000ff">echo <span style="color: #0000ff">date</span> <span style="color: #800000">"</span><span style="color: #800000">+%Y-%m-%d %H:%M:%S</span><span style="color: #800000">"</span> <span style="color: #800000">"<span style="color: #800000">end <<===<span style="color: #800000">" $curl_cmd | <span style="color: #0000ff">tee -<span style="color: #000000">a $log_file<span style="color: #0000ff">done <span style="color: #0000ff">echo 源数据格式参考如下: ,,
,,
,,
当读取的文件格式为空格分隔的文件时,该读取将发生异常,换成另一种方式读取行: #!/bin/==$log_cmd=<span style="color: #800000">"<span style="color: #800000">tee -a $log_file<span style="color: #800000">"<span style="color: #000000">
i=<span style="color: #800080">1 <span style="color: #0000ff">while<span style="color: #000000"> read line; <span style="color: #0000ff">do <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">read line<span style="color: #800000">" $i <span style="color: #800000">"<span style="color: #800000">:<span style="color: #800000">" $line | <span style="color: #0000ff">tee -<span style="color: #000000">a $log_file let <span style="color: #800000">"<span style="color: #800000">i=$i+1<span style="color: #800000">"<span style="color: #000000"> arr=<span style="color: #000000">($line) curl_cmd=<span style="color: #800000">"<span style="color: #800000">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<span style="color: #800000">" <span style="color: #0000ff">echo <span style="color: #0000ff">date</span> <span style="color: #800000">"</span><span style="color: #800000">+%Y-%m-%d %H:%M:%S</span><span style="color: #800000">"</span> <span style="color: #800000">"<span style="color: #800000">start ===>> <span style="color: #800000">" $curl_cmd | <span style="color: #0000ff">tee -<span style="color: #000000">a $log_file
|
- typescript – 如何初始化angular2 materialize组件?
- Bootstrap每天必学之按钮
- redis学习(二) redis数据结构介绍以及常用命令
- 在vim中更改水平分割状态行的突出显示颜色
- 在Angular Material表中混合静态和动态列(mat-table)
- shell – 如何修复docker容器中的ctrl c
- angular-ui-bootstrap – 角度UI手柄与标题部分中的按钮
- 使用gitbash shell在windows上使用ruby irb – 无法使用箭头
- bash – shell脚本数字总和
- cxf(jax-rs) webservice 下 获取webContent文件夹下文件路