pvpgn-server/scripts/announce.sh

68 lines
1.8 KiB
Bash
Raw Normal View History

#!/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
# announcement\nAnd 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