70 lines
1.5 KiB
Bash
Executable File
70 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# TODO: make sure only nagios can write to $inputf and $msgf, else do not run
|
|
|
|
# configuration area
|
|
# TODO: separate configuration into a file owned by nagios user.
|
|
# this improves security and allows reinstall (from git) to not clobber config.
|
|
nick='nagios'
|
|
chan='#ops'
|
|
server='irc.anarchyplanet.org'
|
|
email='nagios@anarchyplanet.org'
|
|
password='mysecretpass'
|
|
port='6667'
|
|
inputf=/tmp/ircinput
|
|
msgf=/tmp/ircmsg
|
|
logf=/tmp/notify_irc.log
|
|
joinmsg="nagios bot reporting"
|
|
|
|
touch $msgf
|
|
|
|
connect() {
|
|
echo "NICK $nick" > $inputf
|
|
echo "USER $nick 8 * : $nick" >> $inputf
|
|
echo "PRIVMSG NickServ : identify $password" >> $inputf
|
|
echo "JOIN $chan" >> $inputf
|
|
echo "PRIVMSG $chan : $joinmsg" >> $inputf
|
|
}
|
|
reconnect() {
|
|
exec $0
|
|
}
|
|
delay() {
|
|
while read line
|
|
do
|
|
sleep 1.5
|
|
echo $line
|
|
done
|
|
}
|
|
register() {
|
|
echo "PRIVMSG NickServ : register $password $email" >> $inputf
|
|
}
|
|
loop() {
|
|
tail -f $msgf | delay | while read line
|
|
do
|
|
echo "PRIVMSG #ops : $line" >> $inputf
|
|
done
|
|
}
|
|
|
|
connect
|
|
|
|
loop &
|
|
|
|
tail -f $inputf | delay | nc $server $port | while read msg
|
|
do
|
|
echo "$msg" | tee $logf
|
|
case "$msg" in
|
|
*'PING'*) echo "$msg" | sed 's/PING/PONG/' >> $inputf
|
|
;;
|
|
*'is not a registered nickname.'*) register
|
|
;;
|
|
*'You have not registered'*) register
|
|
;;
|
|
*'You have not joined'*) echo "JOIN $chan" >> $inputf
|
|
;;
|
|
*'Cannot join'*) sleep 10; echo "JOIN $chan" >> $inputf
|
|
;;
|
|
*'ERROR :Closing link:'*) reconnect
|
|
;;
|
|
esac
|
|
done
|