Senden Sie eine Nachricht von Bash an den IRC-Kanal

9

Ich habe ircd-hybridauf meinem Ubuntu Server (192.168.1.2, example.com) installiert .
Wir #teamchannelkommunizieren im Team.

Die Frage ist: Wie kann ich eine kurze Nachricht von example.combis #teamchannelvom Bash-Skript senden ? z.Bexample.com: Alert! The server is rebooting now

Bearbeiten:

Ich habe ein Perl-Skript gefunden, das genau das tut, was ich brauchte.

Takeshin
quelle

Antworten:

9

Verwenden Sie den Konsolen-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
quelle
Danke, aber das funktioniert bei mir nicht. Nachdem iidie Shell gewartet hat und ich den Befehl mit &beende, wird der zweite Befehl ausgeführt, jedoch ohne Nachricht.
Takeshin
rot die 'out'-Datei, um das Problem zu debuggen: Suchen Sie das IRC-Verzeichnis (/ tmp / SERVERNAME), cd / tmp / SERVERNAME und cat out, geben Sie die Echo-Nachricht ein und lesen Sie sie aus.
Bindbn
12

IRC ist ein einfaches text- und zeilenorientiertes Protokoll, das mit den grundlegenden Linux-Tools ausgeführt werden kann. Also, ohne zu installieren ii:

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

In diesem Befehl ncwird die Netzwerkverbindung hergestellt und Sie senden eine Anmeldeinformation, Nick, treten einem Kanal mit dem Namen "#channel" bei und senden eine Nachricht "Ahoj lidi!" zu diesem Kanal. Und beenden Sie den Server.

Ondra Žižka
quelle
Fügen Sie \ nQUIT am Ende der Liste der Befehle hinzu, die direkt nach dem Senden der einen Nachricht beendet werden sollen
Walter Heck
2

Eine Lösung wäre die Verwendung der Skriptkommunikation mit dem IRC-Server über einen Telnet-Client.

Crankyadmin
quelle
Benötige ich, expectwenn ich die Nachricht von demselben Computer senden möchte, auf dem der IRC-Server installiert ist?
Takeshin
Sie tun .. die obige Lösung würde gut mit erwarten funktionieren.
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
quelle
2
Ein bisschen Text um das Shell-Skript würde einen großen Beitrag dazu leisten, dies zu einer besseren Antwort zu machen.
HBruijn
0

Wenn Sie ein Passwort eingeben und ssl verwenden müssen, können Sie so etwas tun.

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

Das Skript sollte folgendermaßen ausgeführt werden:

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

Dies ähnelt einem früheren Beispiel mit, ncaber ich musste es verwenden ncat, um es mit unserem IRC-Server zum Laufen zu bringen, der mit SSL eingerichtet wurde.

Kevin Cross
quelle