编写实用程序以在远程服务器上执行简单操作

Writing a utility to perform a simple action on a remote server

我需要您就如何进行以下操作提出建议:

  1. 我正在 运行在 Azure VM 上安装反恐精英游戏服务器
  2. 服务器只不过是一个桌面实用程序,运行是某个端口上的一项服务 我的朋友可以连接并玩游戏
  3. 有时,我必须更改游戏上的 "map",这意味着我必须 go/login Azure VM 并手动执行一些操作(非常基本的操作,例如增加 比赛的回合时间)或踢用户
  4. 每次,我都必须登录服务器并手动执行此操作。如果我想让别人做,那么我 必须给他们虚拟机访问权限,这不是我想要的
  5. 我知道中等 Python,所以我可以编写一个实际执行的脚本 此操作(使用 Python OS 库)
  6. 但我希望能够从网络应用程序或任何其他触发器远程运行此脚本

因此用例将如下所示:

这是一个简单的烧瓶 api 可以使用 rcon 通过 steamid 踢玩家。

您可以像这样使用 curl post 数据:

curl -H "Content-Type: application/json" \
  --d '{"steamid":"STEAM_1:0:1234567"}' \
  https://myGameserver.com:8989/kickplayer

api:

from flask import Flask, request
import valve.rcon

app = Flask(__name__)

HOST = "0.0.0.0"
PORT = 8989
DEBUG = True

# replace with your VM's local ip if you are running this web app on the same VM as the csgo server
# or with the azure public ip if not. (You will need to open up port 27015 TCP for rcon)
CSGO_SERVER_IP = "10.0.100.100"
RCON_PORT = 27015
RCON_PASS = "supersekret123456"

@app.route('/kickplayer', methods=['POST'])
def kick_player():
    data = request.get_json()
    steamid = data["steamid"] # STEAM_1:0:XXXXXXXXX

    rcon_command = "sm_kick " + steamid

    with valve.rcon.RCON((CSGO_SERVER_IP, RCON_PORT), RCON_PASS) as rcon:
        response = rcon.execute(rcon_command)

    return f"Kicked player {steamid}"

if __name__ == '__main__':
    app.run(debug=DEBUG, host=HOST, port=PORT)

请随时在 discord 上给我发消息以获取更多建议,我 运行 csgo 服务器并且之前编写过 csgo 网页面板:BurningTimes#1938