Enviar mensaje al canal IRC desde bash

9

Lo instalé ircd-hybriden mi servidor Ubuntu (192.168.1.2, example.com).
Usamos #teamchannelpara comunicarnos dentro del equipo.

La pregunta es: ¿Cómo puedo enviar algún mensaje corto desde example.coma #teamchannelpartir de la escritura del golpe? p.ejexample.com: Alert! The server is rebooting now

Editar:

He encontrado un script perl que hace exactamente lo que necesitaba.

tomashin
fuente

Respuestas:

9

usar consola 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
fuente
Gracias, pero esto no funciona para mí. Después de que iiel shell espera, cuando termino el comando con &, el segundo comando se ejecuta pero sin mensaje.
takeshin
rojo el archivo 'out' para depurar el problema: busque el directorio irc (/ tmp / SERVERNAME), cd / tmp / SERVERNAME y cat out, luego repita el mensaje y lea.
bindbn
12

IRC es un protocolo simple orientado a texto y línea, por lo que se puede hacer con las herramientas básicas de Linux. Entonces, sin instalar ii:

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

En este comando, nchace la conexión de red, y envía una información de inicio de sesión, nick, únete a un canal llamado "#channel" y envía un mensaje "Ahoj lidi!" a ese canal Y sal del servidor.

Ondra Žižka
fuente
agregue \ nQUIT al final de la lista de comandos para salir justo después de enviar un mensaje
Walter Heck,
2

Una solución podría ser el uso de esperar a la comunicación script con el servidor de IRC usando un cliente telnet.

Crankyadmin
fuente
¿Necesito expectcuando quiero enviar el mensaje desde la misma máquina donde está instalado el servidor IRC?
takeshin
usted hace ... la solución anterior funcionaría bien con esperar.
Crankyadmin
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
fuente
2
Un poco de texto alrededor del script de shell ayudaría mucho a que esta sea una mejor respuesta.
HBruijn
0

Si necesita proporcionar una contraseña y usar SSL, puede hacer algo como esto.

#!/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

El script debe ejecutarse así:

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

Esto es similar a un ejemplo anterior, ncpero descubrí que tenía que usarlo ncatpara que funcionara con nuestro servidor IRC que se configuró con SSL.

Kevin Cross
fuente