Kirim pesan ke saluran IRC dari bash

9

Saya telah menginstal ircd-hybriddi Server Ubuntu saya (192.168.1.2, example.com).
Kami biasa #teamchannelberkomunikasi di dalam tim.

Pertanyaannya adalah: bagaimana saya bisa mengirim pesan singkat dari example.comke ke #teamchanneldari skrip bash? misalnyaexample.com: Alert! The server is rebooting now

Edit:

Saya telah menemukan skrip perl yang melakukan persis apa yang saya butuhkan.

takeshin
sumber

Jawaban:

9

gunakan konsol 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
sumber
Terima kasih, tetapi ini tidak berhasil untuk saya. Setelah iishell menunggu, ketika saya mengakhiri perintah dengan &, perintah kedua dijalankan tetapi tanpa pesan.
takeshin
merah file 'out' untuk debug masalah: cari direktori irc (/ tmp / SERVERNAME), cd / tmp / SERVERNAME dan cat out, lalu gema pesan dan bacakan.
bindbn
12

IRC adalah protokol berorientasi teks dan garis sederhana, sehingga dapat dilakukan dengan alat-alat dasar linux. Jadi, tanpa menginstal ii:

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

Dalam perintah ini, ncapakah koneksi jaringan, dan Anda mengirim info masuk, nick, bergabung dengan saluran bernama "#channel" dan mengirim pesan "Ahoj lidi!" ke saluran itu. Dan keluar dari server.

Ondra Žižka
sumber
tambahkan \ nQUIT di akhir daftar perintah untuk berhenti tepat setelah mengirim satu pesan
Walter Heck
2

Salah satu solusinya adalah menggunakan komunikasi skrip harapan dengan server IRC menggunakan klien telnet.

Crankyadmin
sumber
Apakah saya perlu expectketika saya ingin mengirim pesan dari mesin yang sama di mana server IRC diinstal?
takeshin
Anda lakukan .. solusi di atas akan bekerja dengan baik dengan harapan.
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
sumber
2
Sedikit teks di sekitar skrip shell akan membuat ini menjadi jawaban yang lebih baik.
HBruijn
0

Jika Anda perlu memberikan kata sandi dan menggunakan ssl, Anda dapat melakukan sesuatu seperti ini.

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

Script harus dijalankan seperti ini:

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

Ini mirip dengan contoh sebelumnya menggunakan nctetapi saya menemukan saya harus menggunakan ncatuntuk membuatnya bekerja dengan server IRC kami yang telah diatur dengan SSL.

Kevin Cross
sumber