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

手机短信编程

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #-----------------------------------------------------------
  3. # Program : sms_users                          Host : zenobe
  4. # Author  : Philippe Andersson
  5. # Date    : 20/11/98
  6. # Version : 1.3
  7. # Notice  : (c) Les Ateliers du Heron, 1996 for Scitex Europe, S.A.
  8. # Comment : Extract statistics from system logs for SMS subsys.
  9. #           Count number of messages sent by each user and
  10. #           print results on stdout.
  11. # History :
  12. # * 1.0 (23/10/98) : Initial release.
  13. # * 1.1 (03/11/98) : Added handling for -f parameter.
  14. # * 1.2 (18/11/98) : Modified the call to sort in order to get
  15. #   the users sorted by usage, heaviest users first.
  16. # * 1.3 (20/11/98) : Finally found the options to get the sort
  17. #   feature right.
  18. #-----------------------------------------------------------
  19. # Uncomment for debugging
  20. # set -x -v
  21. # Variables
  22. WORKF="/tmp/sms_log"
  23. AWKIN="/tmp/awk_input"
  24. TODAY=$(date +%Y%m%d)
  25. #***********************************************************
  26. #         CODE BEGINS - GET COMMAND LINE PARAMETERS
  27. #***********************************************************
  28. # Disable filename generation while parsing parameters
  29. set -f
  30. #---------------------------------------------Get parameters
  31. while getopts :f: argname; do
  32.   case ${argname} in
  33.     f) FILESET=${OPTARG}
  34.        ;;
  35.     :) echo "sms_users: missing required value for -${OPTARG} parameter."
  36.        exit 1
  37.        ;;
  38.     ?) echo "sms_users 1.3 - SMS Server Stats per User"
  39.        echo " "
  40.        echo "Usage: sms_users [-f workfile]"
  41.        echo " "
  42.        echo "where: -f = workfile (opt. - def. /tmp/sms_log)"
  43.        echo " "
  44.        exit 1
  45.        ;;
  46.   esac
  47. done                                         # while getopts
  48. # Handle additional parameters (unused here)
  49. shift $((${OPTIND} -1))
  50. more_args=${*}
  51. # Re-enable filename generation
  52. set +f
  53. #------------------------------Check for required parameters
  54. # no required parameter.
  55. #----------------------------------------Validate parameters
  56. if [ -n "${FILESET}" ]; then
  57.   # check fileset for existence
  58.   if [ ! -r ${FILESET} ]; then
  59.     echo "sms_stats: the specified workfile (${FILESET}) doesn't exist."
  60.     exit 1
  61.   fi
  62.   # set workfile to it
  63.   WORKF=${FILESET}
  64. fi
  65. #========================================================
  66. # First generate AWK input from workfile
  67. if [ -s ${WORKF} ]; then
  68.   cat ${WORKF} | grep "sender ID" | awk '{print $9}' > ${AWKIN}
  69. else
  70.   exit 1
  71. fi
  72. # Now process this through AWK to get usage for each user
  73. cat ${AWKIN} | awk '
  74. # Word frequencies computation - based on Gawk example
  75. {
  76. freq[$1]++
  77. }
  78. END {
  79. for (user in freq)
  80. printf "%-15st%dn", user, freq[user]
  81. }' | sort -nr +1
  82. # Finally do some cleanup - don't touch $WORKF
  83. rm -f ${AWKIN}
  84. exit 0