bulksms
上传用户:eo_sii
上传日期:2007-01-05
资源大小:91k
文件大小:4k
源码类别:

手机短信编程

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #-----------------------------------------------------------
  3. # Program : bulksms                        Project : SMSLink
  4. # Author  : Philippe Andersson
  5. # Date    : 17/01/00
  6. # Version : 1.0
  7. # Notice  : (c) Les Ateliers du Heron, 2000 for Scitex Europe, S.A.
  8. # Comment : Sends bulk sms through the sendsms client program.
  9. # History : * 1.0 (17/01/00) - Initial release.
  10. #-----------------------------------------------------------
  11. # Uncomment for debugging
  12. #set -v -x
  13. # Constants
  14. # Set default parameter value
  15. GSMLIST="./gsmlist.txt"               # destination GSM list
  16. LOGFILE="./bulksms.log"
  17. MSG=""
  18. SERVER=""
  19. #***********************************************************
  20. #                     SOME FUNCTIONS
  21. #***********************************************************
  22. #***********************************************************
  23. #***********************************************************
  24. #         CODE BEGINS - GET COMMAND LINE PARAMETERS
  25. #***********************************************************
  26. # Disable filename generation while parsing parameters
  27. set -f
  28. #---------------------------------------------Get parameters
  29. while getopts :i:o:m:s: argname; do
  30.   case ${argname} in
  31.     i) GSMLIST=${OPTARG}
  32.        ;;
  33.     o) LOGFILE=${OPTARG}
  34.        ;;
  35.     m) MSG=${OPTARG}
  36.        ;;
  37.     s) SERVER=${OPTARG}
  38.        ;;
  39.     :) echo "bulksms: missing required value for -${OPTARG} parameter."
  40.        exit 1
  41.        ;;
  42.     ?) echo "bulksms 1.0 - Sends bulk SMS"
  43.        echo " "
  44.        echo "Usage: bulksms [-i gsmlist] [-o logfile] -m message -s server"
  45.        echo " "
  46.        echo "where: -i = gsm file (opt. - def. ./gsmlist.txt)"
  47.        echo "       -o = log file (opt. - def. ./bulksms.log)"
  48.        echo "       -m = message (req. - no def.)"
  49.        echo "       -s = SMS server (req. - no def.)"
  50.        echo " "
  51.        exit 1
  52.        ;;
  53.   esac
  54. done                                         # while getopts
  55. # Handle additional parameters (unused here)
  56. shift $((${OPTIND} -1))
  57. more_args=${*}
  58. # Re-enable filename generation
  59. set +f
  60. #------------------------------Check for required parameters
  61. # Message.
  62. if [ -z "${MSG}" ]; then
  63.   echo "bulksms: missing required parameter message."
  64.   exit 1
  65. fi
  66. # Server.
  67. if [ -z "${SERVER}" ]; then
  68.   echo "bulksms: missing required parameter server."
  69.   exit 1
  70. fi
  71. #----------------------------------------Validate parameters
  72. # check config. file for existence
  73. if [ ! -r ${GSMLIST} ]; then
  74.   echo "bulksms: the specified file (${GSMLIST}) doesn't exist (or can't be read)."
  75.   exit 1
  76. fi
  77. #***********************************************************
  78. #                  PRE_PROCESS INPUT FILE
  79. #***********************************************************
  80. echo "Processing..."
  81. if [ -x /usr/local/bin/frf ]; then
  82.   # removes all trailing spaces
  83.   /usr/local/bin/frf -i 0 -o 0 -f ${GSMLIST}
  84.   if [ ${?} -ne 0 ]; then
  85.     echo "bulksms: error while prodessing ${GSMLIST} through frf."
  86.   fi
  87. else
  88.   echo "bulksms : can't pre-process input file through frf (not found)."
  89.   echo "          Continue with input file "as is"... In God we trust (?)"
  90. fi
  91. #***********************************************************
  92. #                      MAIN READ LOOP
  93. #***********************************************************
  94. if [ -r ${GSMLIST} ]; then
  95.   # Write header line to output file (reset it)
  96.   echo "Bulk SMS sending started $(date)." > ${LOGFILE}
  97.   # Now scan input file and process it...
  98.   cat ${GSMLIST} | while read in_line; do
  99.     # ignores full comment lines
  100.     if [ "$(echo ${in_line} | cut -c 1)" = "#" ]; then
  101.       continue
  102.     fi
  103.     # removes comment at end of line
  104.     in_line=${in_line%#*}
  105.     # in case of EOL comments, should also remove trailing spaces.
  106.     # ignores empty lines
  107.     if [ -z ${in_line} ]; then
  108.       continue
  109.     fi
  110.     # now process it...
  111.     echo -n "Sending to ${in_line}..."
  112.     echo -n "Sending to ${in_line}..." >> ${LOGFILE}
  113.     sendsms -d ${in_line} -m "${MSG}" ${SERVER} >> ${LOGFILE} 2>&1
  114.     retval=${?}
  115.     if [ ${retval} -eq 0 ]; then
  116.       echo " OK"
  117.     else
  118.       echo " FAIL"
  119.     fi
  120.     echo " " >> ${LOGFILE}
  121.   done
  122.   # Now close the log with a display of the current time
  123.   echo "Bulk SMS sending finished $(date)." >> ${LOGFILE}
  124. else
  125.   echo "bulksms: can't read ${GSMLIST} config. file."
  126.   exit 1
  127. fi