利用crontab配置定时任务自动更新eitems所需的json文件,解决贴纸插件偶尔不显示内容的问题(Linux服务器) 图章 图章 代码鉴赏 教学 科普

AEISet 三级用户组 2022-10-17 871

前言:

相信很多的服主都遇到过明明正确安装了z1ntex大佬的Weapon Stickers插件后却会出现打开贴纸插件菜单后不显示东西的问题,了解Weapon Stickers这个插件的工作原理的同学都知道这个插件依赖一个叫eItems的插件为其提供饰品的接口。也就是说作者可以在不更新Weapon Stickers这个插件的本体的情况下实现贴纸饰品的更新,只需要对eItems插件所关联的json文件中的内容进行更新。但eItems插件默认状态下是使用其作者github仓库上的资源,那么由于众所周知的原因,eItems插件时常无法获得最新的资源从而导致Weapon Stickers这个插件不能显示内容。

鉴于站主学长已经提供了编译好的自动更新的版本,此贴提供一个利用Linux服务器的定时执行功能实现自动更新的方法。这里我的系统是Debian11,因此接下来的内容均以Debian11的操作作为例子。

实操:

首先我们将eItems插件的配置文件进行修改,该配置文件的路径是:addons/sourcemod/configs/eItems.json

使用记事本打开,修改其中的内容为"Language": "zh_hans","UseLocal": true,如下图:

此处修改的两个值是将使用的语言修改为中文简体,并且使用本地文件。此处所指的本地文件存在的路径是:addons/sourcemod/data

方法1:

然后我们利用crontab功能设置定时自动更新对应的文件,具体操作如下:

crontab -e

第一次使用crontab的同学可能会遇到其显示一个东西:

这里是让你选择使用什么文本编辑器,那么这里不做推荐,按照你自己的习惯选择就好,不同编辑器之间对于设置定时文件没有优劣之分。这里我以其自动推荐的nano编辑器为例(考虑到有些人可能没有安装vim编辑器)

输入1敲击回车后我们会看到一个这样的页面:

将光标移动至最后一行,然后开始键入我们想要设置的定时任务。假设我想要这个定时任务在每天的凌晨12点整执行,那么就输入:

0 0 * * * wget https://raw.githubusercontent.com/ESK0/eItems/main/data/items_zh_hans.json -O /home/csgo/serverfiles/csgo/addons/sourcemod/data/items_zh_hans.json && chmod 744 /home/csgo/serverfiles/csgo/addons/sourcemod/data/items_zh_hans.json

这里的标红的路径我是参照使用LGSM安装的服务器的,具体的路径请按照各自的服务器的路径进行修改。

输入完成后按ctrl+x,然后按y再按回车就会显示

可以再输入crontab -l,如果能显示你设置的定时任务的内容就说明配置好了,最终更新是否成功需要在对应的时间观察文件的修改时间是否变化了,如果有变化就说明定时任务的配置是成功的。

方法2:

第二种方法针对使用steamcmd搭建服务器,并且有安装宝塔面板的服务器,我们可以利用宝塔面板中自带的计划任务功能来实现这个自动更新,但需要注意的是,宝塔面板所创建的计划任务是以root账户为身份进行创建的,因此其自动下载的文件的所有者也会是root,如果你的服务器不是使用root账户搭建的而是自行创建了账户进行搭建的(LGSM服务器不能使用root用户),那么宝塔计划任务的这个方法将不适合你。

宝塔的计划任务是将定时运行和shell脚本进行结合的一种用法,假设我想要设置每天的凌晨12点整进行更新,那么如下图进行设置:

脚本内容:

#!/bin/bash
cd /home/csgo/serverfiles/csgo/addons/sourcemod/data
wget https://raw.githubusercontent.com/ESK0/eItems/main/data/items_zh_hans.json -O items_zh_hans.json

chmod 744 items_zh_hans.json

需要注意的是,cd这里是修改执行的路径,同样这里的路径需要各位根据自己的服务器情况进行调整修改。

补充:

crontab的计划任务功能很强大,其具体功能因为网上已经有很多教程和实例,我这里不再赘述,在这里为大家推荐可供参考学习的实例和教程

教程:https://blog.csdn.net/u010772230/article/details/107131069/

实例:https://blog.csdn.net/qq_27987023/article/details/108345844

没有宝塔或者是宝塔面板计划任务不能用的情况下(例如使用LGSM搭建的服务器),我们可以将crontab计划任务和shell脚本进行结合来实现自动化,这里也不再赘述,实际操作就是先进入非root账户的环境,然后按照你喜欢的方式撰写一个shell脚本(即.sh后缀的文件,格式参照方法2),然后再使用crontab创建定时任务执行该shell脚本(此操作约等于方法2)。

值得注意的是,由于众所周知的原因,我们直接使用eItems原作者的github仓库进行更新虽然可行,但容易出现失败的情况,我这里没有提供自动重试的shell脚本方法(感兴趣的同学可以自行研究)。那我们仍然可以利用国内的类github仓库来解决这个问题,诸如gitee,gitcode都可以,在上面创建好账号,创建新仓库使用URL导入,导入的路径为:https://github.com/ESK0/eItems.git,并设置好镜像仓库,让仓库自动从作者的github仓库拉取文件进行更新,这样就实现了一个完整的更新流程。

以方法2举例:

脚本内容:

#!/bin/bash
cd /home/csgo/serverfiles/csgo/addons/sourcemod/data
wget https://gitee.com/AEISet/e-items/raw/main/data/items_zh_hans.json -O items_zh_hans.json
chmod 744 items_zh_hans.json

这里所使用的gitee仓库是我自己的gitee仓库的URL,大家可以如法炮制,或者想直接使用我的仓库的也可以(只要gitee不防盗链就没事)。

P.S.转载请注明出处!!!

P.S.转载请注明出处!!!


CSGO插件分享-申明 1、本网站名称:CSGO插件分享-中文站  网址:https://bbs.csgocn.net
2、本站的宗旨在于为CSGO玩家提供一个插件分享的中文资源平台,多数插件来源于SourceMod论坛,并配以中文介绍和安装教程。
3、欢迎有能力的朋友共享有趣的CSGO插件资源。
4、本站资源大多为百度网盘,如发现链接失效,可以点: 这里进行反馈,我们会第一时间更新。
最新回复 (2)
  • 我不当学长 管理员组@Ta 2022-10-17 0
    引用 2
    感谢大佬分享!很实用,其实还是linux强啊
  • AEISet 楼主 三级用户组@Ta 2022-10-17 1
    引用 3
    我不当学长 感谢大佬分享!很实用,其实还是linux强啊
    是的,起初我也只是有听说过crontaba计划任务,然后苦恼于CSGOBetterBots这种插件经常需要手动进行更新。于是就萌生了这个自动脚本的想法,花了点时间试了一下发现可行,所以就写了这篇帖子。
返回