9

I have installed ircd-hybrid on my Ubuntu Server (192.168.1.2, example.com).
We use #teamchannel to communicate inside the team.

The question is: how can I send some short message from example.com to #teamchannel from the bash script? e.g. example.com: Alert! The server is rebooting now

Edit:

I have found a perl script which does exactly what I needed.

1

5 Answers 5

9

use console irc client

apt-get install ii
ii -i /tmp -s 192.168.1.2
echo "/PRIVMSG #teamchannel example.com: Alert! The server is rebooting now" > /tmp/irc/in
2
  • Thanks, but this does not work for me. After ii the shell waits, when I end the command with &, the second command executes but without message.
    – takeshin
    Sep 21, 2010 at 13:50
  • red the 'out' file to debug problem: find irc directory(/tmp/SERVERNAME),cd /tmp/SERVERNAME and cat out,then echo message and read out.
    – bindbn
    Sep 21, 2010 at 20:49
12

IRC is a simple text and line oriented protocol, so it can be done with the basic linux tools. So, without installing ii:

echo -e 'USER bot guest tolmoon tolsun\nNICK bot\nJOIN #channel\nPRIVMSG #channel :Ahoj lidi!\nQUIT\n' \
| nc irc.freenode.net 6667

In this command, nc does the network connection, and you send a login info, nick, join a channel named "#channel" amd send a message "Ahoj lidi!" to that channel. And quit the server.

1
  • add \nQUIT at the end of the list of commands to quit right after sending the one message Dec 23, 2011 at 10:10
2

One solution would be to use expect to script communication with the IRC server using a telnet client.

2
  • Do I need expect when I want to send the message from the same machine where the IRC server is installed?
    – takeshin
    Sep 21, 2010 at 13:24
  • you do.. the above solution would work well with expect. Sep 21, 2010 at 14:22
1
#!/bin/bash
exec 3>/dev/tcp/example.com/6667
echo "NICK nickname1234" >&3
echo "USER nickname1234 8 * : nickname1234" >&3
echo "JOIN #teamchannel" >&3
echo "PRIVMSG #teamchannel Alert!" >&3
echo "QUIT" >&3
cat <&3
1
  • 2
    A bit of text around the shell script would go a long way to making this a better answer.
    – HBruijn
    Oct 24, 2014 at 20:08
1

If you need to supply a password and use ssl you can do something like this.

#!/bin/bash -e

USER=$1
MYPASSWORD=$2
IRC_SERVER=$3
IRC_PORT=$4
CHANNEL=$5
MSG=$6

(
echo NICK $USER
echo USER $USER 8 * : $USER
sleep 1
echo PASS $USER:$MYPASSWORD
echo "JOIN $CHANNEL"
echo "PRIVMSG $CHANNEL" $MSG
echo QUIT
) | ncat --ssl $IRC_SERVER $IRC_PORT

The script should be run like this:

./post_to_irc.sh your_user your_pass irc_server 6667 "#target-channel" "Your message"

This is similar to an earlier example using nc but I found I had to use ncat to get it working with our IRC server which has been set up with SSL.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .