announce.sh
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!/bin/sh
  2. # This script is to announce a message on a server automatically
  3. # and repeatedly.  It is intended for server admin use.
  4. # Here is an example:
  5. #
  6. # announce.sh localhost account password 30 "Attention: Here is an
  7. #   announcementnAnd here is another announcement"
  8. #
  9. # The bnchat program can be obtained from the bnetd package.
  10. BNCHAT=bnchat
  11. PIPE="/tmp/pipe-bnannounce-$$"
  12. cleanup () {
  13.         kill -9 "${pid}" 2> /dev/null
  14.         rm -f "${PIPE}" 2> /dev/null
  15.         exit 0
  16. }
  17. if [ -z "$4" ]; then
  18.         echo -e "Usage: $0 server account password interval [msgs] ..."
  19.         echo -e "   server    server ip or hostname"
  20.         echo -e "   account   your server account"
  21.         echo -e "   password  password for your account"
  22.         echo -e "   interval  time intervals between announce in seconds"
  23.         echo -e "   [msgs]    messages you want to announce"
  24.         echo
  25.         echo -e "Notes: Your account should have announce or admin permissions"
  26.         echo -e "       If interval is zero then bnannounce will only print"
  27.         echo -e "       one copy of the announcement."
  28.         echo
  29.         exit
  30. fi
  31. rm -f "${PIPE}"
  32. mknod "${PIPE}" p > /dev/null
  33. if [ $? -ne 0 ] ; then
  34.         echo "$0: failed to make pipe file ${PIPE}, check your permissions." >&2
  35.         exit 1
  36. fi
  37. server="$1"
  38. user="$2"
  39. pass="$3"
  40. interval="$4"
  41. shift 4
  42. msg="`echo -e "$*" | sed -e 's/^//announce /g'`"
  43. "${BNCHAT}" < "${PIPE}" > /dev/null 2>&1 &
  44. pid="$!"
  45. trap "eval cleanup" SIGINT SIGQUIT SIGTERM EXIT
  46. echo -e "${user}" > "${PIPE}"
  47. echo -e "${pass}" > "${PIPE}"
  48. echo "/join Support" > "${PIPE}"
  49. while kill -0 "${pid}" 2> /dev/null; do
  50.         echo "/announce ${msg}" > "${PIPE}"
  51.         if [ "${interval}" -lt "1" ]; then
  52.             exit
  53.         fi
  54.         sleep "${interval}"
  55. done
  56. exit