vicalloy / telegram-shell-bot

A telegram Bot to run shell commands
194 stars 83 forks source link

关于TG bot的快捷命令设置 #4

Closed cgkings closed 4 years ago

cgkings commented 4 years ago

我有个脚本,在我VPS的/root/gd.sh,在finalshell里面默认的root目录下使用./gd.sh可以调用它,但是,我朋友说TG上的shell bot上是无法设置快捷命令,比如通过点击/直接调用这个脚本,而必须手打2个命令才能调用: 1、/run cd /root 2、/run ./gd.sh 请问,您这个bot可以帮我实现点击/出来自定义命令,点击该自定义命令,直接调用这个脚本吗?

cgkings commented 4 years ago

因为我这个就是一键脚本,通过BOT想把这个操作彻底摆脱输入命令行

vicalloy commented 4 years ago

你可以使用自定义命令菜单功能实现这个功能。 用settings里的SC_MENU_ITEM_ROWS设置命令参数。

  1. script目录下创建一个自定义命令脚本xx.sh,把需要执行的命令都放进去。
    #!/bin/sh
    /run cd /root
    /run ./gd.sh
  2. chmod +x xx.sh将脚本设置为可执行。
  3. 在settings.py里通过SC_MENU_ITEM_ROWS设置命令的快捷菜单。
  4. ('脚本说明', 'xx.sh', True),
cgkings commented 4 years ago

/run 会提示没有权限,而如果脚本设置为:

!/bin/bash

cd /root ./gd.sh bot发出命令,好长时间,没反应,task看有进程,但是直到VPS关了bot,bot才显示出来运行了脚本,vps也有了记录,在此之前一点反应都没有

vicalloy commented 4 years ago

默认只会显示命令前3秒的输出内容。 如果需要将所有输出显示出来需要在命令前面加个 oa;。 比如: ('脚本说明', 'oa;xx.sh', True),

cgkings commented 4 years ago

@vicalloy 不好意思,还得麻烦你: 已经改过了:('运行gd.sh', 'oa;gdbot.sh', True),但是“点击运行gd.sh“还是没反应, 在bot上面输入/task,显示这个命令还在后台,kill id,显示killed: /root/telegram-shell-bot/scripts/gdbot.sh,但是再输入/tasks,显示14653, /root/telegram-shell-bot/scripts/gdbot.sh,说明根本没关闭该进程, 在VPS上,ctrl+c关闭该BOT,VPS显示^C2020-05-20 22:45:09,785 - telegram.ext.updater - INFO - Received signal 2 (SIGINT), stopping...,然后BOT上突然又弹出我gd.sh的第一句对话框提示请输入分享链接,真的没办法,本来用BOT就是想随身简化操作的

vicalloy commented 4 years ago

你需要同命令行进行交互? 这个bot是无法做到同控制台进行交互的。 你可以在控制台下直接运行gdbot.sh,看是否可以正常输出。

你的原始脚本里有/run/run这应当也是一个脚本吧,我猜这个脚本帮你处理了一些命令行交互的工作。 如果/run提示没有权限,你需要确认一下你的脚本是否需要root权限才能运行。 如果需要root权限,你需要用root权限来跑这个bot。 开启root权限可能给系统带来风险,如果只是为了执行这个脚本,建议把 ONLY_SHORTCUT_CMD设置成True,关闭除快捷命令外的命令行交互。