Gửi tin nhắn đến kênh IRC từ bash


9

Tôi đã cài đặt ircd-hybridtrên Ubuntu Server của mình (192.168.1.2, example.com).
Chúng tôi sử dụng #teamchannelđể liên lạc trong đội.

Câu hỏi là: làm thế nào tôi có thể gửi một số tin nhắn ngắn từ example.comđến #teamchanneltừ tập lệnh bash? ví dụexample.com: Alert! The server is rebooting now

Biên tập:

Tôi đã tìm thấy một kịch bản perl thực hiện chính xác những gì tôi cần.


Câu trả lời:


9

sử dụng máy khách irc console

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

Cảm ơn, nhưng điều này không làm việc cho tôi. Sau khi iishell chờ, khi tôi kết thúc lệnh &, lệnh thứ hai sẽ thực thi nhưng không có tin nhắn.
takeshin

đỏ tập tin 'ra' để gỡ lỗi: tìm thư mục irc (/ tmp / SERVERNAME), cd / tmp / SERVERNAME và thoát ra, sau đó lặp lại tin nhắn và đọc ra.
bindbn

12

IRC là một giao thức hướng văn bản và dòng đơn giản, vì vậy nó có thể được thực hiện với các công cụ linux cơ bản. Vì vậy, không cần cài đặt ii:

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

Trong lệnh này, nccó kết nối mạng và bạn gửi thông tin đăng nhập, nick, tham gia kênh có tên "#channel" amd gửi tin nhắn "Ahoj lidi!" đến kênh đó. Và thoát khỏi máy chủ.


thêm \ nQUIT vào cuối danh sách các lệnh để thoát ngay sau khi gửi một tin nhắn
Walter Heck

2

Một giải pháp sẽ là sử dụng mong đợi để giao tiếp tập lệnh với máy chủ IRC bằng máy khách telnet.


Tôi có cần expectkhi tôi muốn gửi tin nhắn từ cùng một máy mà máy chủ IRC được cài đặt không?
takeshin

bạn làm .. giải pháp trên sẽ hoạt động tốt với mong đợi.
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

2
Một chút văn bản xung quanh kịch bản shell sẽ đi một chặng đường dài để làm cho câu trả lời này tốt hơn.
HBruijn

0

Nếu bạn cần cung cấp mật khẩu và sử dụng ssl, bạn có thể làm một cái gì đó như thế này.

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

Kịch bản nên được chạy như thế này:

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

Điều này tương tự như một ví dụ trước đó sử dụng ncnhưng tôi thấy tôi phải sử dụng ncatđể làm cho nó hoạt động với máy chủ IRC của chúng tôi đã được thiết lập với SSL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.