bashからIRCチャネルにメッセージを送信する


9

ircd-hybridUbuntuサーバー(192.168.1.2、example.com)にインストールしました。チーム内でのコミュニケーションに
使用#teamchannelします。

問題は、bashスクリプトからexample.comtoに短いメッセージを送信するにはどうすればよい#teamchannelですか?例えばexample.com: Alert! The server is rebooting now

編集:

私はまさに私が必要とするものを実行するperlスクリプトを見つけまし


回答:


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

おかげで、これは私にはうまくいきません。iiシェルが待機した後、でコマンドを終了すると&、2番目のコマンドが実行されますが、メッセージは表示されません。
takeshin

問題をデバッグするための「out」ファイルを赤くします。ircディレクトリー(/ tmp / SERVERNAME)を見つけ、cd / tmp / SERVERNAMEとcat outし、メッセージをエコーし​​て読み上げます。
bindbn 2010

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は、ネットワーク接続を行い、ログイン情報を送信し、ニックネームを付け、「#channel」という名前のチャネルに参加し、「Ahoj lidi!」というメッセージを送信します。そのチャネルに。そして、サーバーを終了します。


コマンドのリストの最後に\ nQUITを追加して、1つのメッセージを送信した直後に終了する
Walter Heck

2

解決策の1つは、telnetクライアントを使用してIRCサーバーとの通信をスクリプトで期待することを使用することです。


expectIRCサーバーがインストールされているのと同じマシンからメッセージを送信するときに必要ですか?
takeshin

上記の解決策は、expectでうまく機能します。
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
シェルスクリプトの周りの少しのテキストは、これをより良い答えにするのに長い道のりを行くでしょう。
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"

これは以前の使用例と似てncncatますが、SSLが設定されたIRCサーバーで動作させるために使用する必要があることがわかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.