LoginSignup
1
1

More than 5 years have passed since last update.

JP1/AJSの情報をslackのhubotから参照したい話

Last updated at Posted at 2017-11-22

はじめに

JP1/AJSを利用してバッチの管理をしてますが、サーバがWindowsで不便なのでslackでジョブの情報を参照したりできたら便利?と思って作ってみました。

WindowsサーバにApache+PHPをインストール

普通にXAMPPでインストールして、Apache起動

ジョブ情報を返すAPIを作る

ジョブの情報を他のLinuxサーバから取得できればなんでもできるので、
先ほどのapache上にAPIを作りました。

ajsprint.php
if(isset($_GET['format']) && $_GET['format']!="") {
    $param = $_GET['format'];
} else {
    $param = 'JN,cm,sc,pm,Ed,ud,fd';
}

$format_list = explode(",", $param);

$tmp = array();
foreach ($format_list as $key => $val) {
    // ajsprintコマンドのフォーマットは半角英字のみ
    if(! preg_match("/[A-z][A-z]/", $val)) {
            die("parameter error");
    }
    $tmp[] = "%".$val;
}
$format = implode("|", $tmp);

// ajsprintコマンドを実行する
$ret = `ajsprint -F AJSROOT1 -f "{$format}" -R  (ジョブのルートの名前)`;

$list = explode("\n", $ret);
$json_array = array();
foreach ( $list as $key => $val ) {
    $tmp = explode("|", $val);
    if(count($tmp) !== count($format_list)){
        continue;
    }
    $row = array();
    for($i = 0; $i < count($format_list) ; $i++) {
        // WindowsサーバなのでSJISからUTF8に文字コードを変換
        $row[$format_list[$i]] = mb_convert_encoding($tmp[$i], "UTF-8", "SJIS");
    }
    $json_array[] = $row;
}
echo json_encode($json_array);

実行してみる

[
  {
    "JN": "/テスト/テストジョブネット/テストジョブ",
    "cm": "",
    "sc": "",
    "pm": "",
    "Ed": "2017/04/14 18:02:20",
    "ud": "2017/04/14 18:02:20",
    "fd": ""
  }
]

ajsprintのフォーマット指示子

詳しくはこの辺に書いてあります。
http://itdoc.hitachi.co.jp/manuals/3020/30203K2543/AJSO0064.HTM#ID00130

よく使いそうなのを抜粋。

フォーマット指示子 出力情報
%JN ジョブネットワーク要素の完全名
%cm コメント
%sc スクリプトファイル名
%pm パラメーター
%Ed 作成日時
%ud 最終更新日時
%fd 終了遅延(分)
%TY ジョブネットワーク要素の種別
%rg 保存世代数
%ms スケジューリング方式 skip:スケジュールスキップ方式 multi:多重スケジュール方式
%mp 多重起動属性 yes:許可する no:許可しない。
%rh 実行ホスト名
%jd 終了判定 normal:常に正常 abnorm:常に異常 code:終了コード exist:ファイルが作成されている場合,正常 modify:ファイルが更新されている場合,正常
%wt 警告終了しきい値
%Th 異常終了しきい値
%FC 監視条件 c:ファイルの作成を監視する。
%FF 監視対象ファイル名
%Ud 配下ユニットを含めた最終更新日時

hubotから参照する

ここまでできればhubot経由でcurlしたり、データをDBに一時的に入れといて参照するだけ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1