Skip to content

gorcon/rcon-cli

Repository files navigation

rcon-cli

Mentioned in Awesome-Selfhosted GitHub Build Go Coverage Go Report Card GitHub All Releases Docker Pulls

CLI for executing queries on a remote Source dedicated game server, using the RCON protocol.

Supported Games

Open pull request if you have successfully used a package with another game with rcon support and add it to the list.

Installation

Download the binary for your platform from the latest releases

See Changelog for release details

Docker

docker pull outdead/rcon

Usage

USAGE:
   rcon [options] [commands...]

GLOBAL OPTIONS:
   --address value, -a value   Set host and port to remote server. Example 127.0.0.1:16260
   --password value, -p value  Set password to remote server
   --type value, -t value      Specify type of connection (default: rcon)
   --log value, -l value       Path to the log file. If not specified it is taken from the config
   --config value, -c value    Path to the configuration file (default: rcon.yaml)
   --env value, -e value       Config environment with server credentials (default: default)
   --skip, -s                  Skip errors and run next command (default: false)
   --timeout value, -T value   Set dial and execute timeout (default: 10s)
   --help, -h                  show help (default: false)
   --version, -v               print the version (default: false)

Rcon CLI can be run in two modes - in the mode of a single query and in the mode of reading the input stream

Single mode

Server address, password and command to server must be specified in flags at startup. Example:

./rcon -a 127.0.0.1:16260 -p mypassword command

It is possible to send several commands in one request. Example:

./rcon -a 127.0.0.1:16260 -p mypassword command "command with several words" 'command "with double quotes"'

If commands passed, they sent in a single mode. The response displayed, and the CLI will exit.

Interactive input stream mode

To run CLI in interactive mode run rcon without commands. Example:

./rcon -a 127.0.0.1:16260 -p mypassword

Use ^C to terminate or type command :q to exit.

In Docker

docker run -it --rm outdead/rcon ./rcon [options] [commands...]

You can add your config file as volume:

docker run -it --rm \
      -v /path/to/rcon-local.yaml:/rcon.yaml \
      outdead/rcon ./rcon -c rcon.yaml -e default players

Configuration file

For more convenient use, the ability to create the rcon.yaml configuration file provided. You can save the host and port of the remote server and its password. If the configuration file exists, and the default block filled in it, then at startup the -a and -p flags can be omitted. Examples:

./rcon -a 127.0.0.1:16260 players
./rcon status
./rcon -p mypassword
./rcon

Default configuration file name is rcon.yaml. File must be saved in yaml format. It is also possible to set the environment name and connection parameters for each server. You can enable logging requests and responses. To do this, you need to define the log variable in the environment blocks. You can do this for each server separately and create different log files for them. If the path to the log file not specified, then logging will not be conducted.

default:
  address: "127.0.0.1:16260"
  password: "password"
  log: "rcon-default.log"
zomboid:
  address: "127.0.0.1:16260"
  password: "password"
  log: "rcon-zomboid.log"
rust:
  address: "127.0.0.1:28003"
  password: "password"
7dtd:
  address: "172.19.0.2:8081"
  password: "password"
  type: "telnet"

Args

You can choose the environment at the start:

./rcon -e rust status
./rcon -e zomboid

Set custom config file:

./rcon -c /path/to/config/file.yaml

Use -l argument to specify path to log file:

./rcon -l /path/to/file.log

Use -t argument to specify the protocol type:

# 7 Days to Die
./rcon -a 172.19.0.2:8081 -p password -t telnet version

# Rust
./rcon -a 127.0.0.1:28016 -p password -t web status

Use -T argument to specify dial and execute timeout:

./rcon -a 172.19.0.2:8081 -p password -t telnet -T 10s version

Contribute

If you think that you have found a bug, create an issue and indicate your operating system, platform, and the game on which the error reproduced. Also describe what you were doing so that the error could be reproduced.

License

MIT License, see LICENSE