announce.sh
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:2k
- #!/bin/sh
- # This script is to announce a message on a server automatically
- # and repeatedly. It is intended for server admin use.
- # Here is an example:
- #
- # announce.sh localhost account password 30 "Attention: Here is an
- # announcementnAnd here is another announcement"
- #
- # The bnchat program can be obtained from the bnetd package.
- BNCHAT=bnchat
- PIPE="/tmp/pipe-bnannounce-$$"
- cleanup () {
- kill -9 "${pid}" 2> /dev/null
- rm -f "${PIPE}" 2> /dev/null
- exit 0
- }
- if [ -z "$4" ]; then
- echo -e "Usage: $0 server account password interval [msgs] ..."
- echo -e " server server ip or hostname"
- echo -e " account your server account"
- echo -e " password password for your account"
- echo -e " interval time intervals between announce in seconds"
- echo -e " [msgs] messages you want to announce"
- echo
- echo -e "Notes: Your account should have announce or admin permissions"
- echo -e " If interval is zero then bnannounce will only print"
- echo -e " one copy of the announcement."
- echo
- exit
- fi
- rm -f "${PIPE}"
- mknod "${PIPE}" p > /dev/null
- if [ $? -ne 0 ] ; then
- echo "$0: failed to make pipe file ${PIPE}, check your permissions." >&2
- exit 1
- fi
- server="$1"
- user="$2"
- pass="$3"
- interval="$4"
- shift 4
- msg="`echo -e "$*" | sed -e 's/^//announce /g'`"
- "${BNCHAT}" < "${PIPE}" > /dev/null 2>&1 &
- pid="$!"
- trap "eval cleanup" SIGINT SIGQUIT SIGTERM EXIT
- echo -e "${user}" > "${PIPE}"
- echo -e "${pass}" > "${PIPE}"
- echo "/join Support" > "${PIPE}"
- while kill -0 "${pid}" 2> /dev/null; do
- echo "/announce ${msg}" > "${PIPE}"
- if [ "${interval}" -lt "1" ]; then
- exit
- fi
- sleep "${interval}"
- done
- exit