【Asterisk应用】利用Asterisk产生呼叫的脚本

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #!/bin/bash # # Simple call generator which uses Asterisk (www.

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

#!/bin/bash
#
# Simple call generator which uses Asterisk (www.asterisk.org)
# to generate calls.
#
# This program is free software, distributed under the terms of
# the GNU General Public License.
#
# Parameters of the call generator
#
CALLFILE=""
CALLSPOOL=""
CALLMINW=""    # In seconds
CALLMAXW=""    # In seconds

NO_ARGS=0
if [ $# -eq "$NO_ARGS" ]    # Script invoked with no command-line args?
then
    echo "Usage: `basename $0` [-fs12]"
    echo "    -f  The call file to use."
    echo "    -s  The Asterisk call spool directory."
    echo "    -1  The minimum time in seconds to wait before initiating a call."
    echo "    -2  The maximum time in seconds to wait before initiating a call."
    exit 1
fi

#
# Get options from command line
#
while getopts ":f:s:1:2:v" option
do
    case $option in
    f )
        CALLFILE=$OPTARG
        ;;
    s )
        CALLSPOOL=$OPTARG
        ;;
    1 )
        CALLMINW=$(($OPTARG))
        ;;
    2 )
        CALLMAXW=$(($OPTARG))
        ;;
    esac
done

#echo "Call file: $CALLFILE"
#echo "Spool directory: $CALLSPOOL"
#echo "Minimum time: $CALLMINW second(s)"
#echo "Maximum time: $CALLMAXW second(s)"

#
# Do some parameters checking
#
if [ -z "$CALLFILE" ]; then
    echo "No call file?"
    exit 1
else
    if [ ! -f $CALLFILE ]; then
        echo "Call file '$CALLFILE' does not exist."
        exit 1
    fi
fi
if [ -z "$CALLSPOOL" ]; then
    echo "No call spool directory?"
    exit 1
else
    if [ ! -d "$CALLSPOOL" ]; then
        echo "Call spool directory '$CALLSPOOL' does not exist."
        exit 1
    fi
fi
if [ -z "$CALLMINW" ]; then
    echo "No min call waiting time?"
    exit 1
fi
if [ -z "$CALLMAXW" ]; then
    echo "No max call waiting time?"
    exit 1
fi
if [ $CALLMINW -gt $CALLMAXW ]; then
    echo "Inappropriate values for min and max call waiting times."
    exit 1
fi

CALLNO="1"
RANDMAX="32767"
RANDOP=$((RANDMAX/CALLMAXW))
TIME="0"
CPS="0"
CPS_STRING="-"
while [ 1 ]
do
    # Get a random number between CALLMINW...CALLMAXW
    # Note: Use bash's RANDOM variable (generates a random between 0...32767)
    # Note: If the limits have the same value, always return that value
    if [ $CALLMAXW -eq $CALLMINW ]; then
        RES=$CALLMAXW
    else
        while [ 1 ]
        do
            RAND=$RANDOM
            RES=$((RAND/RANDOP))
            if [[ $RES -ge $CALLMINW ]]; then
                if [[ $RES -le $CALLMAXW ]]; then
                    break
                fi
            fi
        done
    fi

    # Generate a call after a random time interval
    echo "[Call $CALLNO, Time $TIME, CPS $CPS_STRING] Waiting $RES second(s)..."
    sleep $RES
    cp -f "$CALLFILE" "$CALLSPOOL/callgen$RANDOM$RANDOM"

    # Update stuff
    CALLNO=$((++CALLNO))
    TIME=$((TIME+RES))
    CPS=$((CALLNO*100/TIME))
    CPS_STRING=$((CPS/100)).$(($((CPS%100))/10))$(($((CPS%100))%10))
done

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
Linux
LINUX编译sofia-sip
LINUX编译sofia-sip
251 0
Asterisk怎样配置才能出视频
Asterisk怎样配置才能出视频
109 0
|
编解码 Linux
基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能
原文: 基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能 说明:        1.本文档探讨基于Asterisk如何实现VoIP的一些基本功能,包括基本呼叫功能的方案选取、主叫号码透传、如何编写Asterisk AGI程序、Radius认证计费模块等。
3772 0
|
数据库
FreeSWITCH 发起呼叫和学习使用命令行帮助
FreeSWITCH 发起呼叫和学习使用命令行帮助
|
自然语言处理 Go Windows
asterisk的拨号配置
配置文件 “extensions.conf” 包含了Asterisk的拨号方案(dial plan)。它的所有操作的控制和执行流程的主要方案。它控制呼入和呼出是如何被处理和路由。这里是你配置连接行为的地方。
|
XML 自然语言处理 搜索推荐
FreeSWITCH 与 Asterisk
Anthony Minssale/文 Seven/译
|
SQL JSON NoSQL
FreeSWITCH外呼系统通话记录(CDR)接口
通话记录(CDR) 支持把FreeSWITCH的通话记录写入mysql,sqlserver,oracle等数据库,也可以写入redis的list,或者PUBLISH到redis的channel,方便业务程序实时获取通话记录。
1790 0
|
XML 测试技术 数据格式
freeswitch对接asterisk压测
freeswitch对接asterisk压测
1083 0
|
Python
实用的asterisk客户端
系统可以提供事件消息查看机制,事件保存机制,方便查看以及分析asterisk事件,同时提供方便的ami命令操作界面,提供常用命令以及特殊命令的图形化界面,方便对asterisk的结构体系以及ami命令进行了解和测试。
1557 0