CentOS7中使用Hubot和Slack部署运维机器人

hubot安装

 安装npm

yum install -y npm 

要运行自己的Hubot,需要通过生成器生成,首先安装generator-hubot

npm install -g yo generator-hubot 

生成自己的hubot

mkdir myhubot

cd myhubot

yo hubot 

如果是用root安装的话,这个时候可能会遇到很多权限上的错误,主要原因是它需要对于组有读写权限,所以:

chmod -R 777 /root/.config

chmod -R 777 /root/.npm/_locks

chmod -R 777 /root/.npm/_cacache 

简单起见,这里打开了所有权限。

重新 yo hubot

安装完成配置hubot

安装过程中会问你安装什么样的adapter,手工输入slack。

缺省安装的hubot,会带上heroku和redis,如果用不到的话,可以卸载掉:

npm uninstall hubot-heroku-keepalive --save

在hubot目录下的external-scripts.json文件中把有关heroku和redis的两行删掉就行了,否则老是会报几个警告。

然后,再把hubot-scripts.json删掉,目前我们暂时还用不到它:

rm -f hubot-scripts.json

OK,开始使用吧

./bin/hubot

执行:

myhubot help

myhubot ping

myhubot help


myhubot ping



连接hubot与slack

在slack上安装好hubot的插件,它会自动生成一个token,把这个token记下来

token

在hubot目录下输入:

HUBOT_SLACK_TOKEN=你的token ./bin/hubot --adapter slack

如果没有报错的话,就可以看到Apps下面有我们建立的myhubot,这时候hubot就启动起来,等待接收命令了。但是由于hubot缺省加入的是slack的#general频道,如果你改掉了频道名字,或者删掉了这个频道的话,你需要重新邀请小机器人进入一个新的频道,否则没法对话。

time

现在你可以在slack的客户端和小机器人对话了,可尝试输入命令:

time

myhubot pug me

myhubot pug me



让hubot执行shell脚本

要让机器人执行shell脚本,我们需要安装:

npm install hubot-script-shellcmd

cp -R node_modules/hubot-script-shellcmd/bash ./ 

修改一下external-scripts.json,添加上以下模块:hubot-script-shellcmd。到此为止,你的external-scripts.json应该长的像这个样子:

external-scripts.json文件内容

接下来,

cd bash/handlers

这里面的helloworld就是个例子,没什么用,可以删掉:

rm -f helloworld

把update改造成如下这样的:

#!/bin/bashcd /your/pathgit pullecho "successfully updated!"exit 0

OK,现在重启一下小机器人,在slack端输入:

myhubot shellcmd update

myhubot shellcmd update

常用脚本使用操作示例

检查当前CPU使用情况

在bash/handlers文件夹下新建一个文件,名字就叫比如说cpu,内容如下:

#!/bin/bash

top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'

exit 0

然后,你每次只需要在slack里执行:

myhubot shellcmd cpu

myhubot shellcmd cpu

这样就能知道你的服务器当前cpu使用率了,再也不用去服务器端执行top命令,也不用安装任何系统监控软件,然后打开浏览器看结果。是不是很方便呢?当然类似这样的脚本你还可以写很多,就不一一列举了。








---

你可能感兴趣的:(CentOS7中使用Hubot和Slack部署运维机器人)