需求

现在有一个需求是:向某网站的某接口发送100万条post请求,请求体共有100万条,按行存放在下图的100wDatas.txt,通过shell脚本模拟curl来不停地请求该接口。

在这里插入图片描述

分析:该脚本由上图三个文件构成:

1、sendingPOST.sh:

tokenUrl:下面的例子是先用get拿到token,然后把拿到的token作为post的参数拼接在post请求里面。我调用的网站需要token作为post请求参数的一部分,如果你们的网站不需要token可以无视tokenUrl这部分。

#!/bin/bash

fileName="100wDatas.txt"	#读100w条数据
eventUrl="https://xxx.xxx"	#这里改成想要调用网站的接口
tokenUrl="https://xxx/gettoken"	#我调用的网站需要token作为post请求参数的一部分,如果你们的网站不需要token可以去掉该行
 
echo -E "-----------------begin send------------------"

function sendEvent() {
  count=1;
  step=1
  for productId in `cat $fileName`
  do
    params="token=${token}&id=${productId}"
    #echo "send event params is :${params}"
    curl -d ${params} -X POST ${eventUrl}
    echo -E ""
    echo -E "-----------------------productId is ${productId},has send $count ---------------" >>"sendingLog.log"	#将日志输入到sendingLog.log
    count=$(($count+$step))
  done  

}


head  -n 1 $fileName|while read productId
do 
  echo "the token url is ${tokenUrl}${productId}"
  result=$(curl -X GET ${tokenUrl}${productId})
  echo " request url is $result"
  token=$( echo ${result:1-39:36} )
  echo "token is ${token}"
 
  sendEvent #调用上面的发post请求方法

  echo -E "------------------ send complete -----------------------"
done

该脚本的功能是:疯狂的调用某一个接口(使用curl来调用,POST请求)

一共调用100万次的脚本都从这完成,脚本会顺序读取100wDatas.txt这个文件的第一行,然后进行参数拼接,拼接完成curl里面的POST参数,动态调用100万次接口

2、100wDatas.txt

这个txt文件按行存放共100W条数据,供shell脚本调用。

注意:这个文件可能会有换行符,如下图所示:
在这里插入图片描述

如果我们直接使用vim来看这个文件,看不出来该特殊字符。但是该特殊字符的确存在。

如何看到该特殊字符呢?很简单:vim -b yourFile只需使用-b命令即可

如果我们想按行读取,取到这个换行符就会有问题。所以必须想办法清除该换行符:

方法也很简单:使用vi打开该文件:

切换到命令行模式输入命令::set fileformat=unix
在这里插入图片描述

最后wq保存退出该文件

重新 vim -b 该文件,发现换行符没了:
在这里插入图片描述

3、sendingLog.log

该文件负责输出调用次数(调用结果),会在sendingPOST.sh目录下生成,如果你执行该shell脚本,该日志文件就会自动生成,下图是执行 tail -f sendingLog.log 的结果:

在这里插入图片描述

执行该脚本方法

后台执行:

输入命令 ./sendingPOST.sh &

然后按下 ctrl+c 或者 ctrl+z 压入后台

最后输入exit正常退出终端,不能强行退出终端

重新登录终端,输入命令:ps aux | grep sendingPOST,即可看到后台正在运行的shell脚本进程。

使用这种方法,可以开多个脚本,批量发送100万条POST请求,用多线程的方式发送。(之所以我没这么干是因为怕服务器受不了这么多请求)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐