需求:压力测试,发送某报文10000笔,测试系统稳定性,处理业务速度。
在使用脚本进行发送时,不可避免需要修改某些关键字段,sed可以满足这个需求:
源文件 autoput.xml 如下:
H:{0000 313338559655 ...}
S:{数字签名域}
...
<Msgid>20200331100200</Msgid>
<date>20200315</date>
<industparty>313338559655</industparty>
....
在进行批量发送时,需要修改其中的标签<Msgid></Msgid> 希望其按照一定规律自增,避免系统查重。具体操作如下:
1.创建一个txt文件,保存初始的<Msgid></Msgid>标签,如msgid.txt。
2.使用sed命令修改autoput.xml中的<Msgid>标签,并把修改后的标签写入到msgid.txt中,下次再需要发送时,直接执行脚本即可。
3.具体实现:
①msgid.txt文档只写一行存放第一次发送时的序列号如 <Msgid>20200312100200</Msigd>
②编写shell脚本:seq.sh。
#!/bin/bash
#自动发送脚本,模拟发送10000笔
msgid=`cut -c8-21 msgid.txt`
count=10000
while [ $count -gt 0 ]
do
msgid=`expr $msgid + 1`
count=`expr $count - 1`
sed -ir 's@<Msgid>.*</Msgid>@<Msgid>'"$msgid"'</Msgid>@g' autoput.xml
#发报命令
toputx topcpg 6100 6200 autoput.xml
done
#重新写入到文件,再次使用直接执行脚本即可。
echo "<Msgid>$msgid</Msgid>" >msgid.txt
注意事项:
①msgid=`cut -c8-21 msgid.txt` 截取msgid.txt文件的8到21位,作为msgid起始值 此处的引号是反引号,位于ESC键下。
②sed -i 将修改原文件。-r表示使用正则表达式。