项目地址: https://github.com/vicalloy/telegram-shell-bot
很早之前就打算做这么一个东西,后来因为要调用的脚本是 Python 写的,于是直接在 Bot 里调用 Python 代码。 近期把这个想法重新实现了。
网上也有类似的项目,其中一些比较简单,甚至都没有对用户做校验,这样只要有人可以连上你的机器人就可以控制你的机器。类似的机器人里功能最强的是shell-bot。”shell-bot”模拟了一个 tty,实现较复杂,没有仔细研究。
Telegram Shell Bot目前提供的功能有:
- 鉴权,只有在许可列表里的用户才能对机器人发号指令。
- 支持命令的黑白名单。注:为避免使用
;
跳过命令检查,类似的字符也应当加到字符串黑名单中。 - Shell 命令的执行,如 ls、cat、ps 等。
- 长时间执行命令的管理。如执行 wget 操作,只返回最开始几条输出(防止一直刷屏)。之后可以通过
/tasks
命令查看有哪些命令还在执行中,并可以通过 /kill pid 的方式强制结束命令。 - 支持 sudo。注:sudo 通过
echo password | su -S
的方式实现,需要自行评估风险。 - 自定义脚本放在 ./scripts 目录,通过 /script 命令可以快速访问这些脚本并执行。