以下是Botkit的安装和执行任意命令的示例

安装 Node.js v6.x

在Ubuntu 16.04标准仓库中提供了nodejs v4版本。然而,根据目前的LTS情况,选择了v6版本。

    Installing Node.js via package manager | Node.js
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
$ nodejs -v
v6.9.5
sudo npm update -g npm

botkit 的安装

mkdir ~/slackbot && cd ~/slackbot
npm init -y
npm install botkit --save

使用方法

export token=xxxxxxxxx
node index.js
    sh run.sh
sh df -h | grep G
sh ip a s | grep glo
sh sudo whoami
exit
    sudoは以下必要
user1    ALL=(ALL:ALL) NOPASSWD:ALL

执行任意命令

    命令を受け付けるユーザーを制限しているので、

请修改变量 allow_user 的值为 “用户名”。

const Botkit = require('botkit');

if (!process.env.token) {
  console.log('Error: Specify token in environment');
  process.exit(1);
}

const controller = Botkit.slackbot({
    debug: false
});

controller.spawn({
    token: process.env.token
}).startRTM(function(err){
    if (err) {
        throw new Error(err);
    }
});

// 実行可能ユーザーの制限
function is_allow_user(bot,message) {
    var allow_user = "ユーザ名";
    bot.api.users.info({user:message.user},function(error,response){
        if(response.user.name != allow_user){
            return false;
        }
    });
    return true;
}

// コマンド実行
controller.hears('sh (.*)',['direct_message'],function(bot,message) {

    if(!is_allow_user(bot,message)) {
        bot.reply(message,'your access denied.');
        return false;
    }

    var matches = message.text.match(/^sh (.*)/);
    var command = matches[1];

    const execSync = require('child_process').execSync;
    try {
        const result =  execSync(command).toString();
        bot.reply(message,result);
    } catch(error) {
        bot.reply(message,error.toString());
    }
});

// exit で終了
controller.hears('exit',['direct_message'],function(bot,message) {
    process.exit(0);
});
广告
将在 10 秒后关闭
bannerAds