使用shell脚本批量curl调用POST接口


1.前言

之前写了一篇使用shell脚本批量curl调用接口的文章:

https://mp.weixin.qq.com/s/ZLfI1ePG_bmTj-8M-tgTKA
https://blog.csdn.net/qq_34905631/article/details/132398234?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522c06485d8f4dc8a6c456f4a5a063c1ee5%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=c06485d8f4dc8a6c456f4a5a063c1ee5&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-132398234-null-null.nonecase&utm_term=curl&spm=1018.2226.3001.4450
这篇文章是使用shell脚本批量调用GET接口的方式,后面项目中需要手动去触发调用接口重新生成数据,由于上线之后有问题的数据比较多,所以一条一条的去触发就不得行了,数据多了,手动一条去处理,就相当于人肉手动方式,效率低,也容易出错,如果使用shell来批量调用岂不是美哉,废话多不多说,直接上code。

2.脚本

创建b.sh文件,输入如下脚本,可以直接在Linux上操作,如果是在Windows上操作的,会有shell脚本编码格式的问题,这个问题参看上面之前分享的使用shell脚本批量curl调用接口的文章,里面有详细的解决方法,b.sh的脚本如下:

#!/bin/baship=$1while read linedo#echo $lineOLD_IFS="$IFS"array=($line)a=${array[0]}b=${array[1]}c=${array[2]}echo "$a"echo "$b"echo "$c"echo "ip:${ip},a:${a},b:${b},c:${c}"body="{\"a\": \"${a}\",\"b\":\"${b}\",\"c\":${c}}"echo "$body"curl -X POST "http://${ip}:端口/xxx/xxxx" -H "Content-Type: application/json" -d "${body}"echo "successfully"done
a,b,c参数是动态传入的,端口可以需要写成服务的端口,这个可以搞成和ip那个动态启动传入一个参数port=$2,这里这个端口暂时是写死的。

3.执行

需要在在b.sh的同级目录下新建一个a.txt的文件,a.txt的内容如下:

a b ca b c............

a.txt的每一行的内容是a参数值 空格 b参数值 空格 c参数值的格式,b.sh解析a.txt是读取每一行,然后按照空格解析a,b,c参数的值,然后在拼接调用接口。

执行命令:

sh b.sh ip

4.总结

之前写了一个使用shell脚本批量curl调用接口的方式,然后在项目中遇到要批量调用的POST的接口,后面写了下,给我搞了老半天才搞出来,这点东西还是实用的,在这里分享给大家,希望我的分享能给你启发和帮助,请一键三连,么么么哒!


请使用浏览器的分享功能分享到微信等