0x00:前言
Steam命令行版客户端(SteamCMD)是一个命令行版本的Steam客户端。
它的主要用途是在一个命令行界面的Steam客户端上安装和更新各种可用的专用服务端。
它适用于使用SteamPipe内容分发系统的游戏。
简单来说,其实就是一个Steam设计用来下载服务端的客户端啦<( ̄︶ ̄)>
0x01:下载SteamCmd
Windows系统
- 新建一个文件夹重命名为SteamCmd
例如我在D盘创建一个SteamCmd的文件夹
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
- 下载并解压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
注意: 如果你的账号启动了手机令牌之类的登录验证,则会提示让你输入动态码。(只需要输入一次,后面登录不会再向你要动态码)
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 | 游戏名称 | 匿名下载 |
---|---|---|
90 | Counter-Strike Dedicated Server | √ |
232290 | Counter-Strike: Source Dedicated Server | √ |
740 | Counter-Strike: Global Offensive Dedicated Server | √ |
222840 | Left 4 Dead Dedicated Server | √ |
222860 | Left 4 Dead 2 Dedicated Server | √ |
232250 | Team Fortress 2 Dedicated Server | |
304930 | Unturned | √ |
233780 | Arma 3 Dedicated Server | |
4020 | Garry's Mod Dedicated Server | √ |
343050 | Don’t Strave Together Dedicated Server | √ |
294420 | 7 Days to Die Dedicated Server | |
376030 | ARK: Survival Evolved Dedicated Server |
更多请查看Steam应用ID、Dedicated_Servers_List、SteamDB。
- 验证游戏完整性
验证是一个命令以用来检查服务端的所有文件以确保他们符合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
- Linux下自动化安装CSGO服务端
./steamcmd.sh +login anonymous +force_install_dir /home/CSGO +app_update 740 +quit
脚本执行
- 配置运行脚本
创建一个文本命名为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
您好,我用steam 客户端链接时报错,如Couldn't find encrypted codec /home/aaa/.steam/steamcmd/linux32/libx264.so.142.crypt,这个是什么问题啊
系统环境是什么,在哪个步骤报的错。
这个情况都是文件损坏导致,重下一次steamcmd压缩包并解压一次一般情况下都能解决。
Steam>app_update 740 validate
Update state (0x5) validating, progress: 0.48 (94577567 / 19625563169)
Error! App '740' state is 0x202 after update job.
博主,你好,我在进行到下载并验证csgo服务端那一步,出错。
系统版本是Ubuntu1804
该出错问题,重新执行一次指令即可,这个出错和网络问题相关,也不排除是磁盘相关问题