Skip to content

pinus cli exec命令使用

mike edited this page Dec 25, 2017 · 1 revision

安装: sudo npm install -g pinus-cli

master server 设置 : app.enable('systemMonitor'); //设置后 pinus-cli 才可以使用

app.configure('production|development', 'master', function() {
     app.enable('systemMonitor');
}

使用命令

pinus-cli -h host -P port -u username -p password  

[ host 和 port 是 master.json配置文件中的值 ] [ username 和 password 是adminUser.json配置文件里的用户名和密码] 默认的pinus-cli登录参数

pinus-cli -h 127.0.0.1 -P 3005 -u monitor -p monitor

exec 命令

show servers 查看服务器列表

例如 : 我要设置data-server-1 的数据, 就 执行 use data-server-1 [use all 不行]

game-server/pinus/node_modules/pinus-admin/lib/modules/scripts.js_

//最终执行入口
Module.prototype.monitorHandler = function(agent, msg, cb) {
    //你的脚本里 可以用这些npm module 
    var context = {
        app: this.app,
        require: require,
        os: require('os'),
        fs: require('fs'),
        process: process,
        util: util
    };



    try {//node.js VM 模块
        vm.runInNewContext(msg.script, context);

        var result = context.result;
        if (!result) {
            cb(null, "script result should be assigned to result value to script module context");
        } else {
            cb(null, result);
        }
    } catch (e) {
        cb(null, e.toString());
    }

    //cb(null, vm.runInContext(msg.script, context));
};


/**
 * //举例 : 修改数据库和内存
 * pinus app 对象要挂上bearcat, 才可以像下面那样引用bearcat. 其他模块也如此.
 */
var bearcat = app.bearcat; // bearcat 介绍请看: https://github.com/bearcatjs/bearcat 管理自定义module.
var charPo = bearcat.getBean('charPo'); //操作内存中角色信息模块

var charId = 100000000; //角色Id
var charInfo;

charInfo = charPo.getChar(charId); //获取内存中的角色信息

function updateById (tName,obj){
    var sql = "update `" + tName + "` set ";
    var id = obj.id;
    var temp1 = [];
    var dbData = [];
    for(var myKey in obj){
        if(myKey != 'id' && typeof obj[myKey] != 'function'){
            temp1.push(myKey + " = ?");
            dbData.push(obj[myKey]);
        }
    }

    sql += temp1.join(',');
    sql += " where id = ?";
    dbData.push(id);
    return {sql : sql,dbData : dbData};
}

var tName = 'character';


var obj = {//要修改的信息对象
    id : charId,
    name : "Pinus",
    gold : 888888
}

//在app.js 文件中 设置global.app.mysqlModule = require('mysql'); //否则不能使用mysql模块
var mysql = app.mysqlModule; 

//config/mysql.js 配置 同上 设置 global.app.mysqlConfig = require('./config/mysql.js'); mysql的配置信息
var conf = app.mysqlConfig; 

var connection = mysql.createConnection({//创建数据库连接
    host     : conf.host,
    user     : conf.user,
    password : conf.password,
    database : conf.database
});

connection.connect();

var temp = updateById(tName,obj);
var sql = temp.sql;//sql语句
var dbData = temp.dbData;//参数

connection.query(sql,dbData,function(err){ //执行sql
    if(!err){
        for(var key in charInfo){
            if(charInfo.hasOwnProperty(key)){
                charInfo[key] = obj[key];
            }
        }
        charPo.setChar(charInfo); //设置内存数据
    }
});

connection.end(); //关闭连接

result = obj; //赋值给result 输出obj

Clone this wiki locally