web-dev-qa-db-ja.com

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

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

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

編集:

私は Perlスクリプト を見つけました。

9
takeshin

コンソールの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
9
bindbn

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」という名前のチャネルに参加します。AMDは「Ahoj lidi!」というメッセージを送信します。そのチャネルに。そして、サーバーを終了します。

12
Ondra Žižka

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

2
Crankyadmin
#!/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
1
atsa

パスワードを指定して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を使用して、IRC SSL。

0
Kevin Cross