use o cliente irc do console
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
Instalei ircd-hybrid
no meu servidor Ubuntu (192.168.1.2, example.com).
Usamos #teamchannel
para nos comunicarmos dentro da equipe.
A pergunta é: como posso enviar uma mensagem curta de example.com
para #teamchannel
do script bash? por exemplo. example.com: Alert! The server is rebooting now
Encontrei um script perl que faz exatamente o que eu precisava.
O IRC é um protocolo simples orientado por texto e linha, portanto, pode ser feito com as ferramentas básicas do Linux. Então, sem instalar ii
:
echo -e 'USER bot guest tolmoon tolsun\nNICK bot\nJOIN #channel\nPRIVMSG #channel :Ahoj lidi!\nQUIT\n' \
| nc irc.freenode.net 6667
Neste comando, nc
faz a conexão de rede, e você envia uma informação de login, nick, entra em um canal chamado "#canal" e envia uma mensagem "Ahoj lidi!" para esse canal. E saia do servidor.
Uma solução seria usar espera para a comunicação de script com o servidor de IRC usando um cliente telnet.
#!/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
Se você precisar fornecer uma senha e usar o ssl, poderá fazer algo assim.
#!/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
O script deve ser executado assim:
./post_to_irc.sh your_user your_pass irc_server 6667 "#target-channel" "Your message"
Isso é semelhante a um exemplo anterior usando nc
, mas descobri que precisava usar ncat
para trabalhar com nosso servidor de IRC configurado com SSL.
Tags bash irc automation ubuntu