Enviar mensagem para o canal IRC a partir do bash

9

Eu instalei ircd-hybridno meu Ubuntu Server (192.168.1.2, example.com).
Usamos #teamchannelpara nos comunicar dentro da equipe.

A pergunta é: como posso enviar uma mensagem curta de example.compara #teamchanneldo script bash? por exemploexample.com: Alert! The server is rebooting now

Editar:

Eu encontrei um script perl que faz exatamente o que eu precisava.

leva
fonte

Respostas:

9

use o 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
bindbn
fonte
Obrigado, mas isso não funciona para mim. Depois que iio shell aguarda, quando eu encerro o comando &, o segundo comando é executado, mas sem mensagem.
takeshin 21/09/10
vermelho o arquivo 'out' para depurar o problema: encontre o diretório irc (/ tmp / SERVERNAME), cd / tmp / SERVERNAME e cat out, depois faça eco da mensagem e leia-a.
bindbn
12

O IRC é um protocolo simples orientado a texto e linha, portanto pode ser feito com as ferramentas básicas do Linux. Portanto, 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, nca conexão de rede e você envia uma informação de login, nick, ingressam em um canal chamado "#channel" e envia uma mensagem "Ahoj lidi!" para esse canal. E saia do servidor.

Ondra Žižka
fonte
adicione \ nQUIT no final da lista de comandos para sair logo após o envio da mensagem
Walter Heck
2

Uma solução seria usar o expect para script de comunicação com o servidor IRC usando um cliente de telnet.

Crankyadmin
fonte
Preciso expectquando desejo enviar a mensagem da mesma máquina em que o servidor IRC está instalado?
takeshin 21/09/10
você faz .. a solução acima funcionaria bem com o expect.
precisa saber é o seguinte
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
atsa
fonte
2
Um pouco de texto em torno do script de shell ajudaria muito a tornar essa uma resposta melhor.
HBruijn
0

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 de uso, ncmas eu achei que precisava usá ncat-lo para trabalhar com nosso servidor de IRC, que foi configurado com SSL.

Kevin Cross
fonte