PHPからIPメッセンジャーにメッセージ送信(BOT用)
監視用のスクリプトが必要になり、これの通知に手軽なのがないかな〜と考え、今更だが「IPメッセンジャー」を使った通知をやってみた。
本当はSkypeが良かったんだけど、SkypeはSkypeクライアントをBOT実行マシンにインストールしなくてはならないのがネックだった。(Xが必要だからサーバー機には使えない)
言語は手軽さを考え、PHPで組んでみました。
粗末なスクリプトですが。。。
使い方はこのPHPをincludeしてclassをnewしてやり、send()メソッドを実行するだけです。引数はコメントを書いたのでそっちを参照してください。
<?php //**************************************************************************** /** * IP Messengerへのメッセージ送信クラス * * TCP/IPを使用した、LAN用メッセンジャーであるIP Messengerに対して * メッセージ送信を行うクラスです。 * * IP Messengerについては以下を参照 * http://www.ipmsg.org/ * * @author crays * @create 2009/09/16 * @version 0.1 */ //**************************************************************************** class IpMsg{ var $user = ''; var $host = ''; //**************************************************************************** /** * コンストラクタ * * @params String $user 送信元ユーザー名(未指定時 = IPMSG-BOT) * @params String $host 送信元ホスト名 (未指定時 = IPMSG-BOT-HOST) */ //**************************************************************************** function IpMsg($user = 'IPMSG-BOT', $host = 'IPMSG-BOT-HOST'){ $this->user = $user; $this->host = $host; } //**************************************************************************** /** * メッセージを送信します * * @params String $target_ip 送信先IP * @params String $msg 送信メッセージ * @params int $port 送信先ポート (未指定時 = 2425) * @return boolean 実行結果(成功 = true、失敗 = false) */ //**************************************************************************** function send($target_ip, $msg, $port = 2425){ $cmd_no = 32; $packet_num = time(); if($fp = fsockopen('udp://'.$target_ip, $port)){ fwrite( $fp, join( ':', array( 1 , // 固定値(1) $packet_num, // Packet番号 $this->user, // 自User名 $this->host, // 自Host名 $cmd_no , // Command番号 $msg // メッセージ ) ) ); fclose($fp); }else{ trigger_error('connect error!'); return false; } return true; } }
以下がこれの使用例
「192.168.151.1」はBOTが送信する対象のマシンIP
「ipmsg test」はBOTが送信するメッセージ
<?php include 'ipmsg.php'; $ipmsg = new IpMsg(); $ipmsg->send('192.168.151.1', 'ip test');