编写实用程序以在远程服务器上执行简单操作
Writing a utility to perform a simple action on a remote server
我需要您就如何进行以下操作提出建议:
- 我正在 运行在 Azure VM 上安装反恐精英游戏服务器
- 服务器只不过是一个桌面实用程序,运行是某个端口上的一项服务
我的朋友可以连接并玩游戏
- 有时,我必须更改游戏上的 "map",这意味着我必须 go/login
Azure VM 并手动执行一些操作(非常基本的操作,例如增加
比赛的回合时间)或踢用户
- 每次,我都必须登录服务器并手动执行此操作。如果我想让别人做,那么我
必须给他们虚拟机访问权限,这不是我想要的
- 我知道中等 Python,所以我可以编写一个实际执行的脚本
此操作(使用 Python OS 库)
- 但我希望能够从网络应用程序或任何其他触发器远程运行此脚本
因此用例将如下所示:
- 用户前往 URL (myGameserver.com:8989)
- 他看到了游戏中可用用户的列表。他选择一个并按下 KICK 按钮
- 踢球按钮通过 运行 我在上面第 5 点提到的程序
从服务器踢那个用户
- 我需要你帮助的事情是;我应该使用什么类型的应用程序/技术来制作此 Web 应用程序以及如何将此 "user selection" 作为我的程序的输入传递,以便它知道要踢哪个用户?
这是一个简单的烧瓶 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
我需要您就如何进行以下操作提出建议:
- 我正在 运行在 Azure VM 上安装反恐精英游戏服务器
- 服务器只不过是一个桌面实用程序,运行是某个端口上的一项服务 我的朋友可以连接并玩游戏
- 有时,我必须更改游戏上的 "map",这意味着我必须 go/login Azure VM 并手动执行一些操作(非常基本的操作,例如增加 比赛的回合时间)或踢用户
- 每次,我都必须登录服务器并手动执行此操作。如果我想让别人做,那么我 必须给他们虚拟机访问权限,这不是我想要的
- 我知道中等 Python,所以我可以编写一个实际执行的脚本 此操作(使用 Python OS 库)
- 但我希望能够从网络应用程序或任何其他触发器远程运行此脚本
因此用例将如下所示:
- 用户前往 URL (myGameserver.com:8989)
- 他看到了游戏中可用用户的列表。他选择一个并按下 KICK 按钮
- 踢球按钮通过 运行 我在上面第 5 点提到的程序 从服务器踢那个用户
- 我需要你帮助的事情是;我应该使用什么类型的应用程序/技术来制作此 Web 应用程序以及如何将此 "user selection" 作为我的程序的输入传递,以便它知道要踢哪个用户?
这是一个简单的烧瓶 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