mirror of
https://github.com/oneclickvirt/ecs.git
synced 2025-09-27 19:52:08 +08:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ac1da2af0a | ||
![]() |
6ff440a9e9 | ||
![]() |
1a3049e49d | ||
![]() |
b463cd3085 | ||
![]() |
bf16dfa387 | ||
![]() |
e00415960f | ||
![]() |
f0ed7c5b1c | ||
![]() |
e6500a23ee | ||
![]() |
b1d0611f6b | ||
![]() |
b78cf8a1ac | ||
![]() |
34065b0161 | ||
![]() |
f2e4ca6a0b | ||
![]() |
a8c76a2ee2 | ||
![]() |
d6319e5a02 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
vendor/
|
69
README.md
69
README.md
@@ -18,7 +18,7 @@ Shell版本: https://github.com/spiritLHLS/ecs
|
||||
|
||||
更多架构请自行测试
|
||||
|
||||
编译支持的系统: Linux、Windows、FreeBSD、OpenBSD
|
||||
编译支持的系统: Linux、Windows、MacOS、FreeBSD、OpenBSD
|
||||
|
||||
测试支持的系统: Linux、Windows
|
||||
|
||||
@@ -91,29 +91,29 @@ curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt
|
||||
卸载goecs
|
||||
|
||||
```
|
||||
./goecs.sh delete
|
||||
./goecs.sh uninstall
|
||||
```
|
||||
|
||||
shell脚本的说明
|
||||
|
||||
```
|
||||
Available commands:
|
||||
可用命令:
|
||||
|
||||
./goecs.sh env Check and Install package:
|
||||
sudo (Almost all unix-like systems have it.)
|
||||
tar (Almost all unix-like systems have it.)
|
||||
unzip (Almost all unix-like systems have it.)
|
||||
dd (Almost all unix-like systems have it.)
|
||||
fio (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
|
||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
||||
ping (Use the officially provided binaries for more accurate test results.)
|
||||
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
|
||||
./goecs.sh install Install goecs command
|
||||
./goecs.sh upgrade Upgrade goecs command
|
||||
./goecs.sh delete Uninstall goecs command
|
||||
./goecs.sh help Show this message
|
||||
./goecs.sh env 检查并安装的包:
|
||||
sudo (几乎所有类 Unix 系统都有。)
|
||||
tar (几乎所有类 Unix 系统都有。)
|
||||
unzip (几乎所有类 Unix 系统都有。)
|
||||
dd (几乎所有类 Unix 系统都有。)
|
||||
fio (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
|
||||
sysbench (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
|
||||
geekbench (geekbench5) (仅支持 IPV4 环境,且内存大于 1GB 并需要持续联网,仅支持 amd64 和 arm64 架构。)
|
||||
speedtest (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||
ping (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||
事实上,sysbench/geekbench 是上述依赖项中唯一必须安装的,没有它们无法测试 CPU 分数。
|
||||
./goecs.sh install 安装 goecs 命令
|
||||
./goecs.sh upgrade 升级 goecs 命令
|
||||
./goecs.sh uninstall 卸载 goecs 命令
|
||||
./goecs.sh help 显示此消息
|
||||
```
|
||||
|
||||
goecs唤起菜单
|
||||
@@ -194,4 +194,35 @@ https://github.com/oneclickvirt/ecs/releases
|
||||
|
||||
选择该exe文件,右键点击选择管理员模式运行(非管理员模式运行无法进行硬件测试),唤起菜单自选
|
||||
|
||||
windows测试无需进行环境安装
|
||||
windows测试无需进行环境安装
|
||||
|
||||
## QA
|
||||
|
||||
#### Q: 为什么默认使用sysbench而不是geekbench
|
||||
|
||||
#### A: 比较二者特点
|
||||
|
||||
```
|
||||
sysbench geekbench
|
||||
轻量几乎所有服务器都能跑 重型小机器跑不动
|
||||
测试无联网需求,无硬件需求 测试必须联网,且必须IPV4环境,且有内存大小1G的最低需求
|
||||
LUA编写且开源,各架构系统可自行编译 仅官方二进制文件且不开源,无对应架构时无法自行编译
|
||||
核心测试组件十多年不变 每次大版本更新对标的CPU,不同版本间得分互相之间难转化,你只能以对标的CPU为准
|
||||
测试仅测试计算性能 测试涵盖多种性能测试,得分以权重计算,但实际很多测试项目实际是用不到的
|
||||
适合快速测试 适合全面测试
|
||||
```
|
||||
|
||||
且```goecs```测试使用何种CPU测试方式可使用参数指定,默认只是为了更多用户快速测试的需求
|
||||
|
||||
#### Q: 为什么使用Golang而不是Rust重构
|
||||
|
||||
#### A: 因为网络相关的项目目前以Golang语言为趋势,大多组件有开源生态维护,Rust很多得自己手搓,~~我懒得搞~~我没那个技术力
|
||||
|
||||
#### Q: 为什么不继续开发Shell版本而是选择重构
|
||||
|
||||
#### A: 因为太多千奇百怪的环境问题了,还是提前编译好测试的二进制文件比较容易解决环境问题(泛化性更好)
|
||||
|
||||
#### Q: 每个测试项目的说明有吗?
|
||||
|
||||
#### A: 每个测试项目有对应的维护仓库,自行点击查看仓库说明
|
||||
|
||||
|
24
README_EN.md
24
README_EN.md
@@ -18,7 +18,7 @@ Tested architectures: amd64, arm64
|
||||
|
||||
More architectures please test by yourself
|
||||
|
||||
Compilation support: Linux, Windows、FreeBSD、OpenBSD
|
||||
Compilation support: Linux, Windows、MacOS、FreeBSD、OpenBSD
|
||||
|
||||
Tested on: Linux, Windows
|
||||
|
||||
@@ -79,7 +79,7 @@ Upgrade goecs
|
||||
Uninstall goecs
|
||||
|
||||
```
|
||||
./goecs.sh delete
|
||||
./goecs.sh uninstall
|
||||
```
|
||||
|
||||
Explanation of the shell script
|
||||
@@ -88,19 +88,19 @@ Explanation of the shell script
|
||||
Available commands:
|
||||
|
||||
./goecs.sh env Check and Install package:
|
||||
sudo (Almost all unix-like systems have it.)
|
||||
tar (Almost all unix-like systems have it.)
|
||||
unzip (Almost all unix-like systems have it.)
|
||||
dd (Almost all unix-like systems have it.)
|
||||
fio (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
|
||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
||||
ping (Use the officially provided binaries for more accurate test results.)
|
||||
sudo (Almost all unix-like systems have it.)
|
||||
tar (Almost all unix-like systems have it.)
|
||||
unzip (Almost all unix-like systems have it.)
|
||||
dd (Almost all unix-like systems have it.)
|
||||
fio (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
|
||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
||||
ping (Use the officially provided binaries for more accurate test results.)
|
||||
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
|
||||
./goecs.sh install Install goecs command
|
||||
./goecs.sh upgrade Upgrade goecs command
|
||||
./goecs.sh delete Uninstall goecs command
|
||||
./goecs.sh uninstall Uninstall goecs command
|
||||
./goecs.sh help Show this message
|
||||
```
|
||||
|
||||
|
2
go.mod
2
go.mod
@@ -5,7 +5,7 @@ go 1.22.4
|
||||
require (
|
||||
github.com/imroc/req/v3 v3.43.7
|
||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502
|
||||
github.com/oneclickvirt/UnlockTests v0.0.12-20240716020706
|
||||
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207
|
||||
github.com/oneclickvirt/backtrace v0.0.4-20240702140722
|
||||
github.com/oneclickvirt/basics v0.0.6-20240706025619
|
||||
github.com/oneclickvirt/cputest v0.0.8-20240702070215
|
||||
|
4
go.sum
4
go.sum
@@ -80,8 +80,8 @@ github.com/nxtrace/NTrace-core v1.3.1 h1:f4z5UaZEuhUP/g6xElpZ2bo+guWITJVrMKrJTqd
|
||||
github.com/nxtrace/NTrace-core v1.3.1/go.mod h1:0Px/Zc60qk6cssmP+yv4kstFxvX9sXqDduoVqBO+qf8=
|
||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502 h1:hRIYJ2uEp2N3AH5bP5X6bwfdwWfZQO/2WoqpUJ8+WsY=
|
||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502/go.mod h1:DAmFPRjFV5p9fEzUUSml5jJGn2f1NZJQCzTxITHDjc4=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.12-20240716020706 h1:vq4XidWGEdPb79aON3KAuCXaEsGhTEaJnedhxGHztAE=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.12-20240716020706/go.mod h1:HP3CvAS+AJWxxY+BVbxIOlvaQ87YOSge89vAMG52b5o=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207 h1:pe9RKF/8QxNaxwyzLH+6HC+lkJdBUjQd1HV9FVULoEA=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207/go.mod h1:HP3CvAS+AJWxxY+BVbxIOlvaQ87YOSge89vAMG52b5o=
|
||||
github.com/oneclickvirt/backtrace v0.0.4-20240702140722 h1:UJ/VWf+ZbhGarc9HcHMIyenpmX+b2LxkXu0hlLk3Gxs=
|
||||
github.com/oneclickvirt/backtrace v0.0.4-20240702140722/go.mod h1:zvsC7xY/WZqs5KL2JB967OVnuqjNbxu9bW6wXRLo5h8=
|
||||
github.com/oneclickvirt/basics v0.0.6-20240706025619 h1:IVuyJY41eNAjH9rFf5FPzjegRbkDiS4os9+1YaUov4M=
|
||||
|
2
goecs.go
2
goecs.go
@@ -38,7 +38,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
ecsVersion = "v0.0.52"
|
||||
ecsVersion = "v0.0.54"
|
||||
menuMode bool
|
||||
onlyChinaTest bool
|
||||
input, choice string
|
||||
|
52
goecs.sh
52
goecs.sh
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#From https://github.com/oneclickvirt/ecs
|
||||
#2024.07.04
|
||||
#2024.07.21
|
||||
|
||||
# curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh
|
||||
|
||||
@@ -10,7 +10,7 @@ cat <<"EOF"
|
||||
GG OO OO EE CC SS
|
||||
GG OO OO EE CC SS
|
||||
GG OO OO EEEEEEEE CC SSSSSSSSSS
|
||||
GG GGGGGG OO OO EE CC SS
|
||||
GG GGGGGG OO OO EE CC SS
|
||||
GG GG OO OO EE CC SS
|
||||
GG GG OO OO EE CC SS
|
||||
GGGGGGGG OOOOOOO EEEEEEEE CCCCCCCCC SSSSSSSSSS
|
||||
@@ -375,33 +375,49 @@ env_check() {
|
||||
_green "The next command is: ./goecs.sh install"
|
||||
}
|
||||
|
||||
delete_goecs() {
|
||||
uninstall_goecs() {
|
||||
rm -rf /root/goecs
|
||||
rm -rf /usr/bin/goecs
|
||||
_green "The command (goecs) has been deleted."
|
||||
_green "The command (goecs) has been uninstalled."
|
||||
}
|
||||
|
||||
show_help() {
|
||||
cat <<"EOF"
|
||||
可用命令:
|
||||
|
||||
./goecs.sh env 检查并安装的包:
|
||||
sudo (几乎所有类 Unix 系统都有。)
|
||||
tar (几乎所有类 Unix 系统都有。)
|
||||
unzip (几乎所有类 Unix 系统都有。)
|
||||
dd (几乎所有类 Unix 系统都有。)
|
||||
fio (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
|
||||
sysbench (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
|
||||
geekbench (geekbench5) (仅支持 IPV4 环境,且内存大于 1GB 并需要持续联网,仅支持 amd64 和 arm64 架构。)
|
||||
speedtest (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||
ping (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||
事实上,sysbench/geekbench 是上述依赖项中唯一必须安装的,没有它们无法测试 CPU 分数。
|
||||
./goecs.sh install 安装 goecs 命令
|
||||
./goecs.sh upgrade 升级 goecs 命令
|
||||
./goecs.sh uninstall 卸载 goecs 命令
|
||||
./goecs.sh help 显示此消息
|
||||
|
||||
Available commands:
|
||||
|
||||
./goecs.sh env Check and Install package:
|
||||
sudo (Almost all unix-like systems have it.)
|
||||
wget (Almost all unix-like systems have it.)
|
||||
tar (Almost all unix-like systems have it.)
|
||||
unzip (Almost all unix-like systems have it.)
|
||||
dd (Almost all unix-like systems have it.)
|
||||
fio (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
|
||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
||||
ping (Use the officially provided binaries for more accurate test results.)
|
||||
sudo (Almost all unix-like systems have it.)
|
||||
tar (Almost all unix-like systems have it.)
|
||||
unzip (Almost all unix-like systems have it.)
|
||||
dd (Almost all unix-like systems have it.)
|
||||
fio (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
|
||||
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
|
||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
||||
ping (Use the officially provided binaries for more accurate test results.)
|
||||
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
|
||||
./goecs.sh install Install goecs command
|
||||
./goecs.sh upgrade Upgrade goecs command
|
||||
./goecs.sh delete Uninstall goecs command
|
||||
./goecs.sh uninstall Uninstall goecs command
|
||||
./goecs.sh help Show this message
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -415,8 +431,8 @@ case "$1" in
|
||||
"install" | "upgrade")
|
||||
goecs_check
|
||||
;;
|
||||
"delete")
|
||||
delete_goecs
|
||||
"uninstall")
|
||||
uninstall_goecs
|
||||
;;
|
||||
*)
|
||||
echo "No command found."
|
||||
|
@@ -40,8 +40,8 @@ func PrintHead(language string, width int, ecsVersion string) {
|
||||
PrintCenteredTitle("VPS Fusion Monster Test", width)
|
||||
fmt.Printf("Version: %s\n", ecsVersion)
|
||||
fmt.Println("Review Channel: https://t.me/vps_reviews\n" +
|
||||
"Go Project URL: https://github.com/oneclickvirt/ecs\n" +
|
||||
"Shell Project URL: https://github.com/spiritLHLS/ecs")
|
||||
"Go Project: https://github.com/oneclickvirt/ecs\n" +
|
||||
"Shell Project: https://github.com/spiritLHLS/ecs")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +239,8 @@ func PrintAndCapture(f func(), tempOutput, output string) string {
|
||||
|
||||
// UploadText 上传文本内容到指定URL
|
||||
func UploadText(absPath string) (string, error) {
|
||||
url := "https://paste.spiritlhl.net/api/upload"
|
||||
primaryURL := "http://hpaste.spiritlhl.net/api/upload"
|
||||
backupURL := "https://paste.spiritlhl.net/api/upload"
|
||||
token := network.SecurityUploadToken
|
||||
client := req.DefaultClient()
|
||||
client.SetTimeout(6 * time.Second)
|
||||
@@ -247,24 +248,39 @@ func UploadText(absPath string) (string, error) {
|
||||
SetRetryCount(2).
|
||||
SetRetryBackoffInterval(1*time.Second, 5*time.Second).
|
||||
SetRetryFixedInterval(2 * time.Second)
|
||||
file, _ := os.Open(absPath)
|
||||
resp, err := client.R().
|
||||
SetHeader("Authorization", token).
|
||||
SetHeader("Format", "RANDOM").
|
||||
SetHeader("Max-Views", "0").
|
||||
SetHeader("UploadText", "true").
|
||||
SetHeader("Content-Type", "multipart/form-data").
|
||||
SetHeader("No-JSON", "true").
|
||||
SetFileReader("file", "goecs.txt", file).
|
||||
Post(url)
|
||||
file, err := os.Open(absPath)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
|
||||
return resp.String(), nil
|
||||
} else {
|
||||
return "", fmt.Errorf("upload failed with status code: %d", resp.StatusCode)
|
||||
defer file.Close()
|
||||
upload := func(url string) (string, error) {
|
||||
resp, err := client.R().
|
||||
SetHeader("Authorization", token).
|
||||
SetHeader("Format", "RANDOM").
|
||||
SetHeader("Max-Views", "0").
|
||||
SetHeader("UploadText", "true").
|
||||
SetHeader("Content-Type", "multipart/form-data").
|
||||
SetHeader("No-JSON", "true").
|
||||
SetFileReader("file", "goecs.txt", file).
|
||||
Post(url)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
|
||||
return resp.String(), nil
|
||||
} else {
|
||||
return "", fmt.Errorf("upload failed with status code: %d", resp.StatusCode)
|
||||
}
|
||||
}
|
||||
result, err := upload(primaryURL)
|
||||
if err == nil {
|
||||
return result, nil
|
||||
}
|
||||
result, err = upload(backupURL)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// ProcessAndUpload 创建结果文件并上传文件
|
||||
|
Reference in New Issue
Block a user