VPS装机记录(3):任务机器人
VPS基本设置好后,开始想在上面放一些自动化的东西,那么我们就需要一个机器人,设想的目的是,我们在常用的社交软件发送一条命令或者设置好的指令,机器人就会在VPS上自动执行,并返回结果。
这种机器人,最好的示例可以参考湾区日报是如何运作的?和湾区日报的第一个 “员工”:Slack/Hubot
但是我们暂时实现不了定制化那么高的任务机器人,刚好我在telegram上看到有一个机器人,也比较简单,那么我们就用它来搭建在telegram上的机器人。效果参考下图:
搭建shell-bot机器人
该机器人的repo在botgram/shell-bot,参照作者给的安装流程。
创建机器人帐号
点击此链接与Telegram的BotFather聊天,发送 /newbot
指令,然后依照提示给机器人帐号起名字和账号名,然后获得一串HTTP API的token,如:
Use this token to access the HTTP API:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Keep your token secure and store it safely, it can be used by anyone to control your bot.
安装依赖项
首先,shell-bot是依赖Node.js的,因此先确定你的VPS上安装好了Node.js,使用 npm -v
,确认是否已经安装。
然后,如果你是Ubuntu的系统:
sudo apt-get install build-essential git
如果你跟我一样,是CentOS的系统:
sudo yum install make automake gcc gcc-c++ kernel-devel git
安装并运行shell-bot
clone shell-bot的repo,并使用npm安装依赖的包
git clone https://github.com/botgram/shell-bot.git
cd shell-bot
npm install
然后首次运行shell-bot,它会要求你提供token,并且在Telegram的BotFather帐号,会要求你确认是否是你在连接该机器人,最后生成设置文件
node server
当shell-bot运行起来后,在你的telegram,对话你设置好的机器人,如 /help
或者需要执行的命令前加 /run
,如 /run uname -a
。
持久化运行shell-bot
然后我们安装 forever
来持久化运行shell-bot,使用 -g
来全局安装
sudo npm install -g forever
然后在你的 /etc/rc.local
或者开机执行文件里,加入调用的命令,如:
forever start /path/to/shell-bot/server.js
至此,我们的任务机器人就搭建好了,当需要执行某些任务的时候,我们就打开telegram,然后 /run 命令
,机器人就会自动帮我们在VPS上执行命令,如果是运行较久的命令,我们则静静等待机器人返回执行结果就好了。该机器人支持的命令,可以使用/help
命令,或者在该文件中查看到。
下一篇文章,我会介绍一些服务器监控的APP。
npm install一直报错的解决方法
可能是由于你的Node.js版本太久导致,因此更新Node.js到最新版本,如果你跟我一样是CentOS,需要先更新内核(注意更新内核该操作比较危险,请查清楚后再做,特别是更新后开机项要设置好,不然可能无法开机),然后更新Node.js版本。
更新内核
载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装ELrepo
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # CentOS 7,其他版本不一样
载入 elrepo-kernel 元数据
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
更新内核
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml.x86_64 -y
删除旧工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y
安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y
查看内核插入顺序
默认新内核是从头插入,默认启动顺序也是从 0 开始。
grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)
CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-96820b9851c24560b5f942f2496b9aeb) 7 (Core)
查看当前实际启动顺序
grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)
设置默认启动
grub2-set-default 'CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)'
重启并检查
reboot
uname -r
更新Node.js
yum remove nodejs npm -y
yum install -y nodejs