Skip to content

Instantly share code, notes, and snippets.

@chk1
Last active May 21, 2023 22:19
Show Gist options
  • Save chk1/73a4378ba8baa3e97b4e37acd2c5a885 to your computer and use it in GitHub Desktop.
Save chk1/73a4378ba8baa3e97b4e37acd2c5a885 to your computer and use it in GitHub Desktop.
SRCDS on Linux scripts with auto updates, for Jabroni Brawl 3 dedicated server.

SRCDS Scripts

SRCDS on Linux scripts with auto updates, for Jabroni Brawl 3 dedicated server.

My Setup

  • Ubuntu Server 20.04/22.04
  • Dedicated steam user
  • Everything is located in the steam user's home directory
  • Install screen and whatever else is needed for a SRCDS (see references at the end)

Start Script

start_jbep3.sh (insert your own IP, Steam account token and paths)

#!/bin/bash
cd /home/steam/.steam/steamcmd/jbep3_server
screen -dmS jbserver ./srcds_run.sh -game jbep3 -console -ip 12.34.xx.xx -port 27015 \
       +map jb_killbox +maxplayers 24 +sv_lan 0 +jb_sv_gamemode deathmatch \
       -sv_steamaccount ABCDEF1234 \
       -autoupdate -steam_dir /home/steam/.steam/steamcmd/ -steamcmd_script /home/steam/srcds_autoupdate.txt
echo Started screen session "jbserver", use "screen -r jbserver" to attach back to it.

Parameter steamcmd_script in above command points to this file for auto-updating. It is ran whenever the server is started or when an update becomes available during runtime.

srcds_autoupdate.txt

force_install_dir /home/steam/.steam/steamcmd/jbep3_server/
login anonymous
app_update 869800
quit

Stop Script

Sends quit command to the SRCDS screen.

stop_jbep3.sh

#!/bin/bash
echo Sending quit to screen
screen -S jbserver -X quit
echo Done

Manual Update

steamcmd +force_install_dir ./jbep3_server/ +login anonymous +app_update 869800 verify +quit

Cronjob

Since this server's sole purpose is to run the SRCDS, we can add a cronjob to start the server at boot. Also periodically restart the server (once a day).

SHELL=/bin/bash
@reboot sleep 60 && /home/steam/start_jbep3.sh
0 5 * * * /home/steam/stop_jbep3.sh && /home/steam/start_jbep3.sh

References

SRCDS Munin Plugin

This plugin queries and graphs player numbers on from a configured SRCDS server.

Requirements:

/etc/munin/plugins/srcds

#!/usr/bin/env python3
import a2s
import sys
import os

"""
Munin plugin to query Valve SRCDS servers via anonymous a2s info queries (like in server browser).

Requires the a2s plugin: pip3 install python-a2s

Munin configuration example:
[srcds]
env.ip 127.0.0.1
env.port 27015
"""

server_ip = "127.0.0.1"
server_port = 27015
if "serverip" in os.environ:
  server_ip = os.environ['serverip']
if "serverport" in os.environ:
  server_port = int(os.environ['serverport'])

if len(sys.argv) > 1 and sys.argv[1] == "config":
  conf="""graph_title {} SRCDS Server Query
graph_vlabel Number of Players
graph_category projects
graph_printf %6.0lf
server_players.label Players
server_bots.label Bots
server_players.min 0
server_bots.min 0"""
  print(conf.format(server_ip))
else:
  address = (server_ip, server_port)
  try:
    query_results = a2s.info(address)
    num_players = query_results.player_count
    num_bots = query_results.bot_count
    out = """server_players.value {}
server_bots.value {}"""
    print(out.format(num_players, num_bots))
  except Exception as e:
    out = """server_players.value U
server_bots.value U"""
    print(out)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment