zoukankan      html  css  js  c++  java
  • 【Asterisk应用】利用Asterisk产生呼叫的脚本

    作者: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 中国大陆”许可协议授权。


    分享到:

  • 相关阅读:
    说说移动端web开发中的点击穿透问题
    将博客搬至CSDN
    IIS(4)
    IIS(2)
    IIS(3)
    IIS(1)
    链表
    常用到的关键字
    进程与线程
    文件系统的原理
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2809989.html
Copyright © 2011-2022 走看看