欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

欧卡2入门方向盘选莱仕达V9莱仕达折叠便携游戏方向盘支架欢迎地图Mod入驻
查看: 8436|回复: 0
收起左侧

iTop定制

[复制链接]
oppo 发表于 2017-8-7 12:28 | 显示全部楼层 |阅读模式
本帖最后由 oppo 于 2017-8-7 12:41 编辑

iTop API

包含以下功能

  • web/ HTTP接口
  • actions/ action-shell-exec调用的脚本

部署步骤

  • 安装iTop插件 itop-extensions/action-shell-exec
  • 按照action-shell-exec的文档配置触发器和动作
  • 部署cmdbApi

actions部分文档

action设置SCRIPT_NAME变量为要执行的php脚本,然后使用一个统一的shell脚本作为包裹脚本来异步调用php脚本. 另外,统一的shell脚本还需要其他统一的变量名(主要方便调试,例如在日志中输出工单id或者服务器主机名),因此iTop设置action parameters时要使用变量名=值的方式定义变量,变量列表如下

变量名 变量值
SCRIPT_NAME example.php
ID $this->id$(工单)

注意 logs目录需要可写权限,最好将actions目录属主改为php运行账号

action-shell-exec插件介绍

执行脚本的动作, 需要php开启shell_exec函数

demo script(shell)

#!/bin/bash
d=`cd $(dirname $0);pwd`
cd $d
ds=`date +%Y%m%d-%H%M%S`

echo "$ds  $THIS_NAME - $THIS_HOSTNAME"
echo "$ds  $THIS_NAME - $THIS_HOSTNAME" >> demo.log

demo script(php). 需要读取环境变量

#!/usr/bin/php
<?
$THIS_HOSTNAME = getenv("THIS_HOSTNAME");
$THIS_NAME = getenv("THIS_NAME");
echo "$THIS_HOSTNAME $THIS_NAME";
?>

异步任务

假设脚本需要执行很长时间

#!/usr/bin/php
<?
$THIS_HOSTNAME = getenv("THIS_HOSTNAME");
$THIS_NAME = getenv("THIS_NAME");
$log = "php.log";
sleep(15);
file_put_contents($log, "$THIS_HOSTNAME $THIS_NAME\n", FILE_APPEND);
?>

如上代码,实测此时itop前端要等待15至16秒之间,因此考虑用shell脚本包裹一下,实现后台异步执行真正的任务

#!/bin/bash
d=`cd $(dirname $0);pwd`
cd $d
ds=`date +%Y%m%d-%H%M%S`

echo "$ds  $THIS_NAME - $THIS_HOSTNAME"
echo "$ds  $THIS_NAME - $THIS_HOSTNAME" >> demo.log
#./demo.php &   # 这种做法无效,需要下一行那样(启动子脚本,必须要使用&和指定输出(最好是定向到/dev/null)
./demo.php &>/dev/null  &

task对应触发器动作参考

动作

名称,类别,名称,描述,状态,Path,Parameters
ticket_robot,Script execution,ticket_robot,工单操作,生产中,/wwwroot/cmdbApi/actions/demo.sh,SCRIPT_NAME=ticket_robot.php ID=$this->id$

触发器

描述,目标类,状态,类别,过滤器
工单已解决,Ticket,resolved,触发器 (进入一个状态时),SELECT Ticket AS t WHERE t.finalclass IN ('UserRequest','Incident')

api.php

用途

iTop关闭或重开工单接口

参数列表

参数 说明 备注
action close,reopen
id 工单id
user_satisfaction 1,2,3,4 (1 => 非常满意, 2 => 满意, 3 => 不满意, 4 => 非常不满意) action为close时需要此参数
user_comment action为close时需要此参数
sign 签名 sha1(md5($action . $id . $sk))

返回值

code 含义
0 成功
100 itop执行错误
101 参数错误,缺少action
102 参数错误,缺少id, user_satisfaction或user_comment
103 参数错误,缺少id
110 action类型错误
130 缺少sign或sign错误

sign生成算法

sha1(md5($action . $id . $sk))

其中客户端SK需要和服务端 etc/config.php中的 $config['api']['sk'] 保持一致


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2024-11-25 11:50 , Processed in 0.037720 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表