Envoyer un message au canal IRC depuis bash

9

J'ai installé ircd-hybridsur mon serveur Ubuntu (192.168.1.2, example.com).
Nous utilisons #teamchannelpour communiquer au sein de l'équipe.

La question est: comment puis-je envoyer un court message de example.comà à #teamchannelpartir du script bash? par exempleexample.com: Alert! The server is rebooting now

Éditer:

J'ai trouvé un script perl qui fait exactement ce dont j'avais besoin.

takhin
la source

Réponses:

9

utiliser la console client irc

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
la source
Merci, mais cela ne fonctionne pas pour moi. Après que iile shell ait attendu, lorsque je termine la commande avec &, la deuxième commande s'exécute mais sans message.
prend le
rouge le fichier «out» pour déboguer le problème: recherchez le répertoire irc (/ tmp / SERVERNAME), cd / tmp / SERVERNAME et cat out, puis envoyez un message d'écho et lisez-le.
bindbn
12

IRC est un simple protocole orienté texte et ligne, il peut donc être fait avec les outils Linux de base. Donc, sans installer ii:

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

Dans cette commande, ncfait la connexion réseau, et vous envoyez une information de connexion, nick, rejoignez un canal nommé "#channel" et envoyez un message "Ahoj lidi!" à ce canal. Et quittez le serveur.

Ondra Žižka
la source
ajouter \ nQUIT à la fin de la liste des commandes pour quitter juste après l'envoi du seul message
Walter Heck
2

Une solution serait d'utiliser attendre à la communication de script avec le serveur IRC en utilisant un client Telnet.

Crankyadmin
la source
Ai-je besoin expectlorsque je souhaite envoyer le message à partir de la même machine où le serveur IRC est installé?
prend le
vous faites .. la solution ci-dessus fonctionnerait bien avec attendre.
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
la source
2
Un peu de texte autour du script shell contribuerait grandement à améliorer la réponse.
HBruijn
0

Si vous devez fournir un mot de passe et utiliser SSL, vous pouvez faire quelque chose comme ça.

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

Le script doit être exécuté comme ceci:

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

Ceci est similaire à un exemple précédent, ncmais j'ai trouvé que je devais l'utiliser ncatpour le faire fonctionner avec notre serveur IRC qui a été configuré avec SSL.

Kevin Cross
la source