从bash向IRC频道发送消息


9

我已经ircd-hybrid在Ubuntu服务器上安装了(192.168.1.2,example.com)。
我们#teamchannel经常在团队内部进行沟通。

现在的问题是:如何从发送一些短信example.com#teamchannel从bash脚本?例如example.com: Alert! The server is rebooting now

编辑:

我发现了一个Perl脚本,它完全可以满足我的需求。


Answers:


9

使用控制台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

谢谢,但这对我不起作用。在iishell等待之后,当我以结束命令时&,第二条命令执行但没有消息。
Takehin 2010年

红色的'out'文件来调试问题:找到irc目录(/ tmp / SERVERNAME),cd / tmp / SERVERNAME并发出提示,然后回显消息并读出。
bindbn

12

IRC是一个简单的面向文本和行的协议,因此可以使用基本的Linux工具来完成。因此,无需安装ii

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

在此命令中,nc进行网络连接,然后发送登录信息nick,加入名为“ #channel”的频道,并发送消息“ Ahoj lidi!”。到那个频道。并退出服务器。


在发送一条消息后立即在要退出的命令列表的末尾添加\ nQUIT
Walter Heck

2

一种解决方案是使用期望脚本来使用telnet客户端与IRC服务器通信。


我需要expect时,我想从安装IRC服务器在同一台机器发送邮件?
Takehin 2010年

您可以..上述解决方案可以很好地满足期望。
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
在shell脚本周围添加一些文本将有助于使这个更好的答案。
HBruijn 2014年

0

如果您需要提供密码并使用ssl,则可以执行以下操作。

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

该脚本应这样运行:

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

这类似于先前的示例,nc但是我发现我不得不使用ncat它来与已通过SSL设置的IRC服务器一起使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.