API申请
首先我们需要前往Server酱官网注册账号以获得自己的SCKEY:
可以直接使用Github登录,十分方便。登陆后选择微信推送
,点击绑定。用自己的微信扫描二维码,关注公众号方糖
,然后在扫描一次即可绑定,注意要回到网页点击检查结果并确认绑定
。
然后切换到发送消息
栏,复制自己的SCKEY。
Docker服务器配置
对于使用Docker搭建服务器的用户来说,配置十分方便且不需要暂停服务器。
首先我们使用docker ps
指令查找到Minecraft服务端容器名称,如图为mcserver
:
然后新建一个Python脚本(没有Python环境?参考:Linux下搭建Python环境),输入以下内容并将对应内容改为自己的信息(去掉<>):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| import threading
import time
import urllib.request
import urllib.parse
import os
last_msg = ""
def time_handler():
msg = os.popen("docker logs --tail 1 <服务端容器名称>")
msg = msg.read()
print(msg[:-1])
global last_msg
if msg[-26:] != "Running AutoCompaction...\n" and msg != last_msg:
urllib.request.urlopen("https://sc.ftqq.com/<你的SCKEY>.send?text=" + urllib.parse.quote(msg[27:-25])) # 其中 msg[27:-25] 是特别为玩家上线/下线提醒设置的,如果希望看到完整信息,请改为 msg
else:
print("Nothing to do")
last_msg = msg
global timer
timer = threading.Timer(5, time_handler)
timer.start()
time_handler()
|
然后在终端中输入nohup python3 <你的脚本名称>
并运行即可。
全局服务器配置
如果你使用nohup运行服务器,那么直接使用以下代码即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| import threading
import time
import urllib.request
import urllib.parse
import os
last_msg = ""
def time_handler():
msg = os.popen("tail -n 1 nohup.out") # 如果你自定义了nohup输出地址,请修改
msg = msg.read()
print(msg[:-1])
global last_msg
if msg[-26:] != "Running AutoCompaction...\n" and msg != last_msg:
urllib.request.urlopen("https://sc.ftqq.com/<你的SCKEY>.send?text=" + urllib.parse.quote(msg[27:-25])) # 其中 msg[27:-25] 是特别为玩家上线/下线提醒设置的,如果希望看到完整信息,请改为 msg
else:
print("Nothing to do")
last_msg = msg
global timer
timer = threading.Timer(5, time_handler)
timer.start()
time_handler()
|
如果你使用screen运行服务端,那么你需要先结束原来的服务端并用exit
命令退出screen环境。然后运行screen -L -dmS mc
建立自动日志screen环境。然后通过screen -r mc
进入screen环境中手动启动服务器。
然后按Ctrl+A,D
离开screen环境,用ls
命令可以看到当前目录中出现了screenlog.0
文件(也可能是screenlog.1
如此类推),新建Python脚本(没有Python环境?参考:Linux下搭建Python环境),输入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| import threading
import time
import urllib.request
import urllib.parse
last_msg = ""
def time_handler():
msg = open("screenlog.0") # 或者screenlog.1以此类推
msg = msg.readlines()[-1]
print(msg[:-1])
global last_msg
if msg[-26:] != "Running AutoCompaction...\n" and msg != last_msg:
urllib.request.urlopen("https://sc.ftqq.com/<你的SCKEY>.send?text=" + urllib.parse.quote("[Sunny s World] " + msg[27:-25]))
else:
print("Nothing to do.")
last_msg = msg
global timer
timer = threading.Timer(1, time_handler)
timer.start()
time_handler()
|
然后在终端中输入nohup python3 <你的脚本名称>
即可。
参考链接:
- https://sc.ftqq.com/
- https://blog.futrime.com/hacking/302.html
- https://blog.futrime.com/hacking/131.html
- https://docs.docker.com/