PHPからIPメッセンジャーにメッセージ送信(BOT用)

監視用のスクリプトが必要になり、これの通知に手軽なのがないかな〜と考え、今更だが「IPメッセンジャー」を使った通知をやってみた。
本当はSkypeが良かったんだけど、SkypeSkypeクライアントを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');
プライバシーポリシー お問い合わせ