0x00:前言

Steam.jpg
Steam命令行版客户端(SteamCMD)是一个命令行版本的Steam客户端。
它的主要用途是在一个命令行界面的Steam客户端上安装和更新各种可用的专用服务端。
它适用于使用SteamPipe内容分发系统的游戏。

简单来说,其实就是一个Steam设计用来下载服务端的客户端啦<( ̄︶ ̄)>


0x01:下载SteamCmd

Windows系统

  • 新建一个文件夹重命名为SteamCmd
    例如我在D盘创建一个SteamCmd的文件夹

创建文件夹

  • 下载SteamCmd Windows版
    | 点我下载 | 备用线路 |
  • 解压Zip文件中的文件到文件夹
    SteamCmd
  • 运行SteamCmd
    待steamcmd下载所需运行文件后,出现以下界面,即为安装完成。

安装完成.jpg

Linux系统

  • 安装SteamCmd运行所需环境
# Ubuntu/Debian 64位
sudo apt -y install lib32gcc1

# RedHat/CentOS 32位
sudo yum -y install glibc libstdc++

# RedHat/CentOS 64位
sudo yum -y install glibc.i686 libstdc++.i686
  • 为SteamCmd创建系统账户

由于steam不建议直接在root下运行steamcmd,所以我们为steamcmd创建一个专门运行他的用户

# 创建账户
useradd -m steam

# 设置账户密码
passwd steam

# 切换用户
su - steam
  • 为SteamCmd创建文件夹
    我比较喜欢吧steamcmd放在home目录下

故本文将在/home/目录下创建一个叫steamcmd的目录

mkdir /home/steamcmd 
cd /home/steamcmd

mkdir

  • 下载并解压Linux系统专用的SteamCMD
# 下载
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz 

# 解压
tar -zxf steamcmd_linux.tar.gz
  • 运行SteamCmd
# 进入steamcmd文件夹
cd /home/steamcmd/

# 运行steamcmd
./steamcmd.sh

首次运行steamcmd,他会下载所需的支持文件。
等到运行出现steam>时就可以对steamcmd进行操作啦。(~o ̄3 ̄)~
安装完成


0x02:登录 SteamCmd

匿名登录

可以下载大多数游戏服务端,你可以选择匿名登录。(像CSGO和L4D2都通过匿名登录下载)

login anonymous

Steam帐户登录

有一些服务端需要你使用一个Steam帐户登录后才可以下载。(比如杀戮空间)

login <用户名> <密码>
  • 比如登录张三的账号
login zhangsan password

注意: 如果你的账号启动了手机令牌之类的登录验证,则会提示让你输入动态码。(只需要输入一次,后面登录不会再向你要动态码)

登录.png


0x03:下载一个应用

  • 打开SteamCMD并登录它
  • 设置你的应用安装目录

注意: 在Linux系统下使用正斜杠/,在Windows系统下使用反斜杠\

force_install_dir <路径>

举个栗子
Windows下,将安装目录定位到D盘的CSGO文件夹下(D:CSGO)

force_install_dir D:\CSGO\

Linux下,将安装目录定位到/home目录下的CSGO目录下(/home/CSGO)

force_install_dir /home/CSGO
  • 通过SteamCmd下载服务端

安装或更新应用使用app_update命令.

app_update <应用ID>

下面列出常用的Steam游戏服务器ID

应用ID游戏名称匿名下载
90Counter-Strike Dedicated Server
232290Counter-Strike: Source Dedicated Server
740Counter-Strike: Global Offensive Dedicated Server
222840Left 4 Dead Dedicated Server
222860Left 4 Dead 2 Dedicated Server
232250Team Fortress 2 Dedicated Server
304930Unturned
233780Arma 3 Dedicated Server
4020Garry's Mod Dedicated Server
343050Don’t Strave Together Dedicated Server
2944207 Days to Die Dedicated Server
376030ARK: Survival Evolved Dedicated Server

更多请查看Steam应用IDDedicated_Servers_ListSteamDB

  • 验证游戏完整性

验证是一个命令以用来检查服务端的所有文件以确保他们符合SteamCMD所应该下载到本地的文件。如果你认为文件可能已丢失或已损坏,那么此命令将会非常有用。

app_update <应用ID> validate

验证将会覆盖已被更改了的文件。这可能会导致服务端的自定义问题。例如:如果你自定义了mapcycle.txt,此文件将会被覆盖至服务端的默认值。不是默认安装文件一部分的任何文件将不受影响。

  • 退出SteamCmd

下载完成后可以通过以下指令注销并退出SteamCmd

quit

0x04:自动化SteamCmd

这里有两个方法来将SteamCMD自动化,即自动重试下载失败的服务端直到完成后自动退出Steamcmd。(在Linux系统下使用./steamcmd.sh来替代steamcmd。)

命令行下

在命令行追加命令需要在其前面添加加号,例如:

Windows下
steamcmd.exe +login <账号> +force_install_dir <安装目录> +app_update <服务端ID> +quit
Linux下
./steamcmd.sh +login <账号> +force_install_dir <安装目录> +app_update <服务端ID> +quit

举个板栗

  • Windows下自动化安装CSGO服务端
steamcmd.exe +login anonymous +force_install_dir D:\CSGO\ +app_update 740 +quit

Windows

  • Linux下自动化安装CSGO服务端
./steamcmd.sh +login anonymous +force_install_dir /home/CSGO +app_update 740 +quit

Linux

脚本执行

  • 配置运行脚本

创建一个文本命名为autocmd.txt,将以下指令写入其中。

// autocmd.txt
//
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
login <username> <password>
//若所下载的服务端无须登录则使用anonymous登录
//login anonymous 
force_install_dir /home/csgo
//设置安装地址 ↑
app_update 740 validate
quit
  • 执行脚本内容
steamcmd +runscript autocmd.txt

0x05:参考文档

Steam Developer Community:https://developer.valvesoftware.com/wiki/SteamCMD
Dedicated_Servers_List:https://developer.valvesoftware.com/wiki/Dedicated_Servers_List

Last modification:March 8th, 2020 at 02:57 am
If you think my article is useful to you, please feel free to appreciate