如何在SIPP的<exec>段中使用变量及注入命令行传入的字符串
刚好我对SIPP的
一、在段中使用SIPP变量
SIPP的$变量名的格式在cmd属性里调用,SIPP会在执行命令前自动完成变量替换。
举个完整的例子:
<scenario name="exec_var_example"> <!-- 1. 声明全局变量 --> <variable name="default_pcap" value="sipp_default.pcap"/> <!-- 2. 从SIP消息提取会话变量(比如从INVITE的From头拿用户名) --> <recv request="INVITE"> <action> <ereg regexp="sip:(.*)@" search_in="hdr" header="From" assign_to="$caller_username"/> </action> </recv> <!-- 3. 在exec中组合使用变量 --> <exec cmd="/usr/bin/tcpdump -w $default_pcap -i eth0 host $caller_username" log="true"/> </scenario>
这里$default_pcap是预先定义的全局变量,$caller_username是从消息中提取的会话变量,SIPP执行时会把它们替换成实际值再运行tcpdump命令。
二、将命令行传入的字符串注入到段中
SIPP支持通过命令行参数-set var=value传递自定义变量,只要在脚本里先声明对应变量,就能直接在
步骤拆解:
- 脚本中声明变量(可以给默认值,也可以留空):
<scenario name="cmd_line_exec_example"> <variable name="custom_cmd_param" value="default_log.txt"/> <!-- 引用命令行传入的变量 --> <exec cmd="echo 'Call completed' >> $custom_cmd_param" log="true"/> </scenario>
- 命令行传递变量:
如果要传递简单字符串:
sipp 127.0.0.1 -sf your_scenario.xml -set custom_cmd_param "call_records_$(date +%Y%m%d).txt"
如果要传递完整命令片段:
sipp 127.0.0.1 -sf your_scenario.xml -set custom_cmd_param "/usr/bin/tcpdump -w dynamic_pcap.pcap -i any port 5060"
- 注意事项:如果传递的参数包含空格、特殊字符,一定要用双引号括起来,避免被shell拆分。
另外,你也可以直接引用SIPP的内置变量(比如$call_id、$local_port)到
内容的提问来源于stack exchange,提问作者Makesh
相关产品推荐
相关产品推荐

