mirror of
https://github.com/oneclickvirt/ecs.git
synced 2025-10-02 22:24:08 +08:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a1491585d6 | ||
![]() |
b5fce2e16b | ||
![]() |
ac1da2af0a | ||
![]() |
6ff440a9e9 | ||
![]() |
1a3049e49d | ||
![]() |
b463cd3085 | ||
![]() |
bf16dfa387 | ||
![]() |
e00415960f | ||
![]() |
f0ed7c5b1c | ||
![]() |
e6500a23ee | ||
![]() |
b1d0611f6b | ||
![]() |
b78cf8a1ac | ||
![]() |
34065b0161 | ||
![]() |
f2e4ca6a0b | ||
![]() |
a8c76a2ee2 | ||
![]() |
d6319e5a02 | ||
![]() |
2213e52335 | ||
![]() |
0f5b11cc5f |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
vendor/
|
70
README.md
70
README.md
@@ -18,7 +18,7 @@ Shell版本: https://github.com/spiritLHLS/ecs
|
|||||||
|
|
||||||
更多架构请自行测试
|
更多架构请自行测试
|
||||||
|
|
||||||
编译支持的系统: Linux、Windows、FreeBSD、OpenBSD
|
编译支持的系统: Linux、Windows、MacOS、FreeBSD、OpenBSD
|
||||||
|
|
||||||
测试支持的系统: Linux、Windows
|
测试支持的系统: Linux、Windows
|
||||||
|
|
||||||
@@ -91,29 +91,30 @@ curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt
|
|||||||
卸载goecs
|
卸载goecs
|
||||||
|
|
||||||
```
|
```
|
||||||
./goecs.sh delete
|
./goecs.sh uninstall
|
||||||
```
|
```
|
||||||
|
|
||||||
shell脚本的说明
|
shell脚本的说明
|
||||||
|
|
||||||
```
|
```
|
||||||
Available commands:
|
可用命令:
|
||||||
|
|
||||||
./goecs.sh env Check and Install package:
|
./goecs.sh env 检查并安装的包:
|
||||||
sudo (Almost all unix-like systems have it.)
|
sudo (几乎所有类 Unix 系统都有。)
|
||||||
tar (Almost all unix-like systems have it.)
|
tar (几乎所有类 Unix 系统都有。)
|
||||||
unzip (Almost all unix-like systems have it.)
|
unzip (几乎所有类 Unix 系统都有。)
|
||||||
dd (Almost all unix-like systems have it.)
|
dd (几乎所有类 Unix 系统都有。)
|
||||||
fio (Almost all unix-like systems can be installed through the system's package manager.)
|
fio (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
|
||||||
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
|
sysbench (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
|
||||||
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
|
geekbench (geekbench5) (仅支持 IPV4 环境,且内存大于 1GB 并需要持续联网,仅支持 amd64 和 arm64 架构。)
|
||||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
speedtest (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||||
ping (Use the officially provided binaries for more accurate test results.)
|
ping (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||||
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
|
systemd-detect-virt 或 dmidecode (几乎所有类 Unix 系统都有,安装以获得更准确的测试结果。)
|
||||||
./goecs.sh install Install goecs command
|
事实上,sysbench/geekbench 是上述依赖项中唯一必须安装的,没有它们无法测试 CPU 分数。
|
||||||
./goecs.sh upgrade Upgrade goecs command
|
./goecs.sh install 安装 goecs 命令
|
||||||
./goecs.sh delete Uninstall goecs command
|
./goecs.sh upgrade 升级 goecs 命令
|
||||||
./goecs.sh help Show this message
|
./goecs.sh uninstall 卸载 goecs 命令
|
||||||
|
./goecs.sh help 显示此消息
|
||||||
```
|
```
|
||||||
|
|
||||||
goecs唤起菜单
|
goecs唤起菜单
|
||||||
@@ -194,4 +195,35 @@ https://github.com/oneclickvirt/ecs/releases
|
|||||||
|
|
||||||
选择该exe文件,右键点击选择管理员模式运行(非管理员模式运行无法进行硬件测试),唤起菜单自选
|
选择该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: 每个测试项目有对应的维护仓库,自行点击查看仓库说明
|
||||||
|
|
||||||
|
25
README_EN.md
25
README_EN.md
@@ -18,7 +18,7 @@ Tested architectures: amd64, arm64
|
|||||||
|
|
||||||
More architectures please test by yourself
|
More architectures please test by yourself
|
||||||
|
|
||||||
Compilation support: Linux, Windows、FreeBSD、OpenBSD
|
Compilation support: Linux, Windows、MacOS、FreeBSD、OpenBSD
|
||||||
|
|
||||||
Tested on: Linux, Windows
|
Tested on: Linux, Windows
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ Upgrade goecs
|
|||||||
Uninstall goecs
|
Uninstall goecs
|
||||||
|
|
||||||
```
|
```
|
||||||
./goecs.sh delete
|
./goecs.sh uninstall
|
||||||
```
|
```
|
||||||
|
|
||||||
Explanation of the shell script
|
Explanation of the shell script
|
||||||
@@ -88,19 +88,20 @@ Explanation of the shell script
|
|||||||
Available commands:
|
Available commands:
|
||||||
|
|
||||||
./goecs.sh env Check and Install package:
|
./goecs.sh env Check and Install package:
|
||||||
sudo (Almost all unix-like systems have it.)
|
sudo (Almost all unix-like systems have it.)
|
||||||
tar (Almost all unix-like systems have it.)
|
tar (Almost all unix-like systems have it.)
|
||||||
unzip (Almost all unix-like systems have it.)
|
unzip (Almost all unix-like systems have it.)
|
||||||
dd (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.)
|
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.)
|
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.)
|
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.)
|
speedtest (Use the officially provided binaries for more accurate test results.)
|
||||||
ping (Use the officially provided binaries for more accurate test results.)
|
ping (Use the officially provided binaries for more accurate test results.)
|
||||||
|
systemd-detect-virt OR dmidecode (Almost all unix-like systems have it, 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.
|
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 install Install goecs command
|
||||||
./goecs.sh upgrade Upgrade 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
|
./goecs.sh help Show this message
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
package basic1
|
package basic1
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func Test_basic(t *testing.T) {
|
func Test_basic(t *testing.T) {
|
||||||
Basic("zh")
|
Basic("zh")
|
||||||
|
@@ -7,10 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 使用gopsutil查询可能会特别慢,执行命令查询反而更快
|
// 本包不在main中使用,仅做测试使用
|
||||||
// TODO
|
|
||||||
// 迁移Shell的完整检测逻辑使用执行命令的方式查询,最后都失败才使用gopsutil查询
|
|
||||||
// 本包不在main中使用
|
|
||||||
func Basic(language string) {
|
func Basic(language string) {
|
||||||
ipInfo, _, _ := network.NetworkCheck("both", false, language)
|
ipInfo, _, _ := network.NetworkCheck("both", false, language)
|
||||||
systemInfo := system.CheckSystemInfo(language)
|
systemInfo := system.CheckSystemInfo(language)
|
||||||
|
@@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func DiskTest(language, testMethod, testPath string, isMultiCheck bool) {
|
func DiskTest(language, testMethod, testPath string, isMultiCheck bool, autoChange bool) {
|
||||||
var res string
|
var res string
|
||||||
if runtime.GOOS == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
if testMethod != "winsat" && testMethod != "" {
|
if testMethod != "winsat" && testMethod != "" {
|
||||||
@@ -18,13 +18,13 @@ func DiskTest(language, testMethod, testPath string, isMultiCheck bool) {
|
|||||||
switch testMethod {
|
switch testMethod {
|
||||||
case "fio":
|
case "fio":
|
||||||
res = disk.FioTest(language, isMultiCheck, testPath)
|
res = disk.FioTest(language, isMultiCheck, testPath)
|
||||||
if res == "" {
|
if res == "" && autoChange {
|
||||||
res = "Fio test failed, switching to DD for testing.\n"
|
res = "Fio test failed, switching to DD for testing.\n"
|
||||||
res += disk.DDTest(language, isMultiCheck, testPath)
|
res += disk.DDTest(language, isMultiCheck, testPath)
|
||||||
}
|
}
|
||||||
case "dd":
|
case "dd":
|
||||||
res = disk.DDTest(language, isMultiCheck, testPath)
|
res = disk.DDTest(language, isMultiCheck, testPath)
|
||||||
if res == "" {
|
if res == "" && autoChange {
|
||||||
res = "DD test failed, switching to Fio for testing.\n"
|
res = "DD test failed, switching to Fio for testing.\n"
|
||||||
res += disk.FioTest(language, isMultiCheck, testPath)
|
res += disk.FioTest(language, isMultiCheck, testPath)
|
||||||
}
|
}
|
||||||
|
10
go.mod
10
go.mod
@@ -5,9 +5,9 @@ go 1.22.4
|
|||||||
require (
|
require (
|
||||||
github.com/imroc/req/v3 v3.43.7
|
github.com/imroc/req/v3 v3.43.7
|
||||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502
|
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502
|
||||||
github.com/oneclickvirt/UnlockTests v0.0.11-20240704101006
|
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207
|
||||||
github.com/oneclickvirt/backtrace v0.0.4-20240702140722
|
github.com/oneclickvirt/backtrace v0.0.4-20240702140722
|
||||||
github.com/oneclickvirt/basics v0.0.5-20240704113233
|
github.com/oneclickvirt/basics v0.0.6-20240726130933
|
||||||
github.com/oneclickvirt/cputest v0.0.8-20240702070215
|
github.com/oneclickvirt/cputest v0.0.8-20240702070215
|
||||||
github.com/oneclickvirt/defaultset v0.0.2-20240624082446
|
github.com/oneclickvirt/defaultset v0.0.2-20240624082446
|
||||||
github.com/oneclickvirt/disktest v0.0.4-20240704095213
|
github.com/oneclickvirt/disktest v0.0.4-20240704095213
|
||||||
@@ -16,7 +16,7 @@ require (
|
|||||||
github.com/oneclickvirt/nt3 v0.0.3-20240702132013
|
github.com/oneclickvirt/nt3 v0.0.3-20240702132013
|
||||||
github.com/oneclickvirt/pingtest v0.0.4-20240703142340
|
github.com/oneclickvirt/pingtest v0.0.4-20240703142340
|
||||||
github.com/oneclickvirt/portchecker v0.0.1-20240624155429
|
github.com/oneclickvirt/portchecker v0.0.1-20240624155429
|
||||||
github.com/oneclickvirt/security v0.0.4-20240704114145
|
github.com/oneclickvirt/security v0.0.4-20240706030003
|
||||||
github.com/oneclickvirt/speedtest v0.0.7-20240704023701
|
github.com/oneclickvirt/speedtest v0.0.7-20240704023701
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -43,6 +43,7 @@ require (
|
|||||||
github.com/libp2p/go-nat v0.2.0 // indirect
|
github.com/libp2p/go-nat v0.2.0 // indirect
|
||||||
github.com/libp2p/go-netroute v0.2.1 // indirect
|
github.com/libp2p/go-netroute v0.2.1 // indirect
|
||||||
github.com/lionsoul2014/ip2region v2.11.2+incompatible // indirect
|
github.com/lionsoul2014/ip2region v2.11.2+incompatible // indirect
|
||||||
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||||
github.com/magiconair/properties v1.8.7 // indirect
|
github.com/magiconair/properties v1.8.7 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
@@ -58,6 +59,7 @@ require (
|
|||||||
github.com/pion/stun/v2 v2.0.0 // indirect
|
github.com/pion/stun/v2 v2.0.0 // indirect
|
||||||
github.com/pion/transport/v2 v2.2.1 // indirect
|
github.com/pion/transport/v2 v2.2.1 // indirect
|
||||||
github.com/pion/transport/v3 v3.0.1 // indirect
|
github.com/pion/transport/v3 v3.0.1 // indirect
|
||||||
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||||
github.com/quic-go/qpack v0.4.0 // indirect
|
github.com/quic-go/qpack v0.4.0 // indirect
|
||||||
github.com/quic-go/quic-go v0.45.1 // indirect
|
github.com/quic-go/quic-go v0.45.1 // indirect
|
||||||
github.com/refraction-networking/utls v1.6.6 // indirect
|
github.com/refraction-networking/utls v1.6.6 // indirect
|
||||||
@@ -67,6 +69,8 @@ require (
|
|||||||
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
||||||
github.com/schollz/progressbar/v3 v3.14.4 // indirect
|
github.com/schollz/progressbar/v3 v3.14.4 // indirect
|
||||||
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
|
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
|
||||||
|
github.com/shirou/gopsutil/v4 v4.24.5 // indirect
|
||||||
|
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
||||||
github.com/showwin/speedtest-go v1.7.7 // indirect
|
github.com/showwin/speedtest-go v1.7.7 // indirect
|
||||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||||
github.com/spf13/afero v1.11.0 // indirect
|
github.com/spf13/afero v1.11.0 // indirect
|
||||||
|
25
go.sum
25
go.sum
@@ -24,6 +24,7 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v
|
|||||||
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
|
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
|
||||||
github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM=
|
github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM=
|
||||||
github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8=
|
github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8=
|
||||||
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
|
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
|
||||||
@@ -60,6 +61,8 @@ github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9t
|
|||||||
github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ=
|
github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ=
|
||||||
github.com/lionsoul2014/ip2region v2.11.2+incompatible h1:+VRsGcrHz8ewXI/2UzTptJlACsxD/p4xCxuql4u2nKU=
|
github.com/lionsoul2014/ip2region v2.11.2+incompatible h1:+VRsGcrHz8ewXI/2UzTptJlACsxD/p4xCxuql4u2nKU=
|
||||||
github.com/lionsoul2014/ip2region v2.11.2+incompatible/go.mod h1:+ZBN7PBoh5gG6/y0ZQ85vJDBe21WnfbRrQQwTfliJJI=
|
github.com/lionsoul2014/ip2region v2.11.2+incompatible/go.mod h1:+ZBN7PBoh5gG6/y0ZQ85vJDBe21WnfbRrQQwTfliJJI=
|
||||||
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||||
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
@@ -77,12 +80,12 @@ 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/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 h1:hRIYJ2uEp2N3AH5bP5X6bwfdwWfZQO/2WoqpUJ8+WsY=
|
||||||
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502/go.mod h1:DAmFPRjFV5p9fEzUUSml5jJGn2f1NZJQCzTxITHDjc4=
|
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502/go.mod h1:DAmFPRjFV5p9fEzUUSml5jJGn2f1NZJQCzTxITHDjc4=
|
||||||
github.com/oneclickvirt/UnlockTests v0.0.11-20240704101006 h1:dJyfuPFwmueK7x0TC/PZU1jfgB6s15T9VOwjMn13loY=
|
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207 h1:pe9RKF/8QxNaxwyzLH+6HC+lkJdBUjQd1HV9FVULoEA=
|
||||||
github.com/oneclickvirt/UnlockTests v0.0.11-20240704101006/go.mod h1:HP3CvAS+AJWxxY+BVbxIOlvaQ87YOSge89vAMG52b5o=
|
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 h1:UJ/VWf+ZbhGarc9HcHMIyenpmX+b2LxkXu0hlLk3Gxs=
|
||||||
github.com/oneclickvirt/backtrace v0.0.4-20240702140722/go.mod h1:zvsC7xY/WZqs5KL2JB967OVnuqjNbxu9bW6wXRLo5h8=
|
github.com/oneclickvirt/backtrace v0.0.4-20240702140722/go.mod h1:zvsC7xY/WZqs5KL2JB967OVnuqjNbxu9bW6wXRLo5h8=
|
||||||
github.com/oneclickvirt/basics v0.0.5-20240704113233 h1:Mu4c/LJKOOyEDRK9r6g6ehpwivvCaeqecg0IgTjYr04=
|
github.com/oneclickvirt/basics v0.0.6-20240726130933 h1:+jBB/t/p1nCff+drm9TPDDIQlgDuJ9VHZMQ/9Hp70CU=
|
||||||
github.com/oneclickvirt/basics v0.0.5-20240704113233/go.mod h1:P0+c+E5C+Ewur2Zs9N+U3aZECrFeigXsTTzZOv97ShM=
|
github.com/oneclickvirt/basics v0.0.6-20240726130933/go.mod h1:MkFyxHrB+xuTqprJ3e4KvG0jv3IfHMbc/MPfGXI/n7U=
|
||||||
github.com/oneclickvirt/cputest v0.0.8-20240702070215 h1:CcFpyVPlQkJ6vjFP17BRuJhh/afiJhOhZ0BW+TtfVDg=
|
github.com/oneclickvirt/cputest v0.0.8-20240702070215 h1:CcFpyVPlQkJ6vjFP17BRuJhh/afiJhOhZ0BW+TtfVDg=
|
||||||
github.com/oneclickvirt/cputest v0.0.8-20240702070215/go.mod h1:MmaHN9+XMntI3rLycwj8Ne31fG18IfNoa8N2utDK1CY=
|
github.com/oneclickvirt/cputest v0.0.8-20240702070215/go.mod h1:MmaHN9+XMntI3rLycwj8Ne31fG18IfNoa8N2utDK1CY=
|
||||||
github.com/oneclickvirt/defaultset v0.0.2-20240624082446 h1:5Pg3mK/u/vQvSz7anu0nxzrNdELi/AcDAU1mMsmPzyc=
|
github.com/oneclickvirt/defaultset v0.0.2-20240624082446 h1:5Pg3mK/u/vQvSz7anu0nxzrNdELi/AcDAU1mMsmPzyc=
|
||||||
@@ -99,8 +102,8 @@ github.com/oneclickvirt/pingtest v0.0.4-20240703142340 h1:012W8Ly6ALISwIL5cYFM8O
|
|||||||
github.com/oneclickvirt/pingtest v0.0.4-20240703142340/go.mod h1:IU9RzZpS5tfP2kcFd2sw2fE80BgtiMUK8jp6qnN/0cY=
|
github.com/oneclickvirt/pingtest v0.0.4-20240703142340/go.mod h1:IU9RzZpS5tfP2kcFd2sw2fE80BgtiMUK8jp6qnN/0cY=
|
||||||
github.com/oneclickvirt/portchecker v0.0.1-20240624155429 h1:+wapaOcFrg1iWJDhBKThDzppyIMY7hWxK7F5RBkZg4o=
|
github.com/oneclickvirt/portchecker v0.0.1-20240624155429 h1:+wapaOcFrg1iWJDhBKThDzppyIMY7hWxK7F5RBkZg4o=
|
||||||
github.com/oneclickvirt/portchecker v0.0.1-20240624155429/go.mod h1:HQxSTrqM8/QFqHMTBZ7S8H9eEO5FkUXU1eb7ZX5Mk+k=
|
github.com/oneclickvirt/portchecker v0.0.1-20240624155429/go.mod h1:HQxSTrqM8/QFqHMTBZ7S8H9eEO5FkUXU1eb7ZX5Mk+k=
|
||||||
github.com/oneclickvirt/security v0.0.4-20240704114145 h1:+3s2foEUS7Br/oYjEAi+VR0y46lE6jMvXHI1vnRX4aE=
|
github.com/oneclickvirt/security v0.0.4-20240706030003 h1:9WvT1dvxVw1YoG7yolHtWmR2pfWkHiQIXTDAvzSajD4=
|
||||||
github.com/oneclickvirt/security v0.0.4-20240704114145/go.mod h1:ouSxY43DU46HYncAHCjyWbWqVtnP/YJouB/+TwKXnh8=
|
github.com/oneclickvirt/security v0.0.4-20240706030003/go.mod h1:9zoRRRHDP8+QVkt15nvw7b51nE7LFNWhqL1KzpjvfHI=
|
||||||
github.com/oneclickvirt/speedtest v0.0.7-20240704023701 h1:F8ChZXf3U1/bUk+dCFt0Gc01LSPLhbBhCeHjkEJ6K88=
|
github.com/oneclickvirt/speedtest v0.0.7-20240704023701 h1:F8ChZXf3U1/bUk+dCFt0Gc01LSPLhbBhCeHjkEJ6K88=
|
||||||
github.com/oneclickvirt/speedtest v0.0.7-20240704023701/go.mod h1:zd5ZgIGslmtQLQehEfRjyumlvgDHTpCSMchKfKXoASI=
|
github.com/oneclickvirt/speedtest v0.0.7-20240704023701/go.mod h1:zd5ZgIGslmtQLQehEfRjyumlvgDHTpCSMchKfKXoASI=
|
||||||
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
|
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
|
||||||
@@ -124,6 +127,8 @@ github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9
|
|||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
|
||||||
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||||
github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
|
github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
|
||||||
github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
|
github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
|
||||||
github.com/quic-go/quic-go v0.45.1 h1:tPfeYCk+uZHjmDRwHHQmvHRYL2t44ROTujLeFVBmjCA=
|
github.com/quic-go/quic-go v0.45.1 h1:tPfeYCk+uZHjmDRwHHQmvHRYL2t44ROTujLeFVBmjCA=
|
||||||
@@ -145,6 +150,12 @@ github.com/schollz/progressbar/v3 v3.14.4 h1:W9ZrDSJk7eqmQhd3uxFNNcTr0QL+xuGNI9d
|
|||||||
github.com/schollz/progressbar/v3 v3.14.4/go.mod h1:aT3UQ7yGm+2ZjeXPqsjTenwL3ddUiuZ0kfQ/2tHlyNI=
|
github.com/schollz/progressbar/v3 v3.14.4/go.mod h1:aT3UQ7yGm+2ZjeXPqsjTenwL3ddUiuZ0kfQ/2tHlyNI=
|
||||||
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
|
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
|
||||||
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||||
|
github.com/shirou/gopsutil/v4 v4.24.5 h1:gGsArG5K6vmsh5hcFOHaPm87UD003CaDMkAOweSQjhM=
|
||||||
|
github.com/shirou/gopsutil/v4 v4.24.5/go.mod h1:aoebb2vxetJ/yIDZISmduFvVNPHqXQ9SEJwRXxkf0RA=
|
||||||
|
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||||
|
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||||
|
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||||
|
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||||
github.com/showwin/speedtest-go v1.7.7 h1:VmK75SZOTKiuWjIVrs+mo7ZoKEw0utiGCvpnurS0olU=
|
github.com/showwin/speedtest-go v1.7.7 h1:VmK75SZOTKiuWjIVrs+mo7ZoKEw0utiGCvpnurS0olU=
|
||||||
github.com/showwin/speedtest-go v1.7.7/go.mod h1:uLgdWCNarXxlYsL2E5TOZpCIwpgSWnEANZp7gfHXHu0=
|
github.com/showwin/speedtest-go v1.7.7/go.mod h1:uLgdWCNarXxlYsL2E5TOZpCIwpgSWnEANZp7gfHXHu0=
|
||||||
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
||||||
@@ -229,6 +240,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
@@ -269,6 +281,7 @@ golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
|
|||||||
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
|
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
45
goecs.go
45
goecs.go
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/oneclickvirt/CommonMediaTests/commediatests"
|
"github.com/oneclickvirt/CommonMediaTests/commediatests"
|
||||||
@@ -37,7 +38,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ecsVersion = "v0.0.50"
|
ecsVersion = "v0.0.56"
|
||||||
menuMode bool
|
menuMode bool
|
||||||
onlyChinaTest bool
|
onlyChinaTest bool
|
||||||
input, choice string
|
input, choice string
|
||||||
@@ -54,6 +55,7 @@ var (
|
|||||||
basicStatus, cpuTestStatus, memoryTestStatus, diskTestStatus bool
|
basicStatus, cpuTestStatus, memoryTestStatus, diskTestStatus bool
|
||||||
commTestStatus, utTestStatus, securityTestStatus, emailTestStatus bool
|
commTestStatus, utTestStatus, securityTestStatus, emailTestStatus bool
|
||||||
backtraceStatus, nt3Status, speedTestStatus, pingTestStatus bool
|
backtraceStatus, nt3Status, speedTestStatus, pingTestStatus bool
|
||||||
|
autoChangeDiskTestMethod = true
|
||||||
filePath = "goecs.txt"
|
filePath = "goecs.txt"
|
||||||
enabelUpload = true
|
enabelUpload = true
|
||||||
help bool
|
help bool
|
||||||
@@ -119,6 +121,7 @@ func main() {
|
|||||||
basicStatus, cpuTestStatus, memoryTestStatus, diskTestStatus = false, false, false, false
|
basicStatus, cpuTestStatus, memoryTestStatus, diskTestStatus = false, false, false, false
|
||||||
commTestStatus, utTestStatus, securityTestStatus, emailTestStatus = false, false, false, false
|
commTestStatus, utTestStatus, securityTestStatus, emailTestStatus = false, false, false, false
|
||||||
backtraceStatus, nt3Status, speedTestStatus = false, false, false
|
backtraceStatus, nt3Status, speedTestStatus = false, false, false
|
||||||
|
autoChangeDiskTestMethod = true
|
||||||
switch language {
|
switch language {
|
||||||
case "zh":
|
case "zh":
|
||||||
fmt.Println("VPS融合怪版本: ", ecsVersion)
|
fmt.Println("VPS融合怪版本: ", ecsVersion)
|
||||||
@@ -129,7 +132,7 @@ func main() {
|
|||||||
fmt.Println("5. 精简解锁版(系统信息+CPU+内存+磁盘IO+御三家+常用流媒体+测速节点5个)")
|
fmt.Println("5. 精简解锁版(系统信息+CPU+内存+磁盘IO+御三家+常用流媒体+测速节点5个)")
|
||||||
fmt.Println("6. 网络单项(IP质量检测+三网回程+三网路由与延迟+测速节点11个)")
|
fmt.Println("6. 网络单项(IP质量检测+三网回程+三网路由与延迟+测速节点11个)")
|
||||||
fmt.Println("7. 解锁单项(御三家解锁+常用流媒体解锁)")
|
fmt.Println("7. 解锁单项(御三家解锁+常用流媒体解锁)")
|
||||||
fmt.Println("8. 硬件单项(系统信息+CPU+内存+dd磁盘测试+fio磁盘测试)-待修复")
|
fmt.Println("8. 硬件单项(系统信息+CPU+内存+dd磁盘测试+fio磁盘测试)")
|
||||||
fmt.Println("9. IP质量检测(15个数据库的IP检测+邮件端口检测)")
|
fmt.Println("9. IP质量检测(15个数据库的IP检测+邮件端口检测)")
|
||||||
fmt.Println("10. 三网回程线路+广州三网路由+全国三网延迟")
|
fmt.Println("10. 三网回程线路+广州三网路由+全国三网延迟")
|
||||||
case "en":
|
case "en":
|
||||||
@@ -207,7 +210,6 @@ func main() {
|
|||||||
speedTestStatus = true
|
speedTestStatus = true
|
||||||
backtraceStatus = true
|
backtraceStatus = true
|
||||||
nt3Status = true
|
nt3Status = true
|
||||||
enabelUpload = false
|
|
||||||
break Loop
|
break Loop
|
||||||
case "7":
|
case "7":
|
||||||
commTestStatus = true
|
commTestStatus = true
|
||||||
@@ -219,12 +221,11 @@ func main() {
|
|||||||
cpuTestStatus = true
|
cpuTestStatus = true
|
||||||
memoryTestStatus = true
|
memoryTestStatus = true
|
||||||
diskTestStatus = true
|
diskTestStatus = true
|
||||||
// TODO 双硬盘类型测试
|
autoChangeDiskTestMethod = false
|
||||||
break Loop
|
break Loop
|
||||||
case "9":
|
case "9":
|
||||||
securityTestStatus = true
|
securityTestStatus = true
|
||||||
emailTestStatus = true
|
emailTestStatus = true
|
||||||
enabelUpload = false
|
|
||||||
break Loop
|
break Loop
|
||||||
case "10":
|
case "10":
|
||||||
backtraceStatus = true
|
backtraceStatus = true
|
||||||
@@ -291,6 +292,14 @@ func main() {
|
|||||||
basicInfo, securityInfo, nt3CheckType = utils.SecurityCheck(language, nt3CheckType, securityTestStatus)
|
basicInfo, securityInfo, nt3CheckType = utils.SecurityCheck(language, nt3CheckType, securityTestStatus)
|
||||||
if basicStatus {
|
if basicStatus {
|
||||||
fmt.Printf(basicInfo)
|
fmt.Printf(basicInfo)
|
||||||
|
} else if (input == "6" || input == "9") && securityTestStatus {
|
||||||
|
scanner := bufio.NewScanner(strings.NewReader(basicInfo))
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
if strings.Contains(line, "IPV") {
|
||||||
|
fmt.Println(line)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, tempOutput, output)
|
}, tempOutput, output)
|
||||||
@@ -307,9 +316,14 @@ func main() {
|
|||||||
}
|
}
|
||||||
}, tempOutput, output)
|
}, tempOutput, output)
|
||||||
output = utils.PrintAndCapture(func() {
|
output = utils.PrintAndCapture(func() {
|
||||||
if diskTestStatus {
|
if diskTestStatus && autoChangeDiskTestMethod {
|
||||||
utils.PrintCenteredTitle(fmt.Sprintf("硬盘测试-通过%s测试", diskTestMethod), width)
|
utils.PrintCenteredTitle(fmt.Sprintf("硬盘测试-通过%s测试", diskTestMethod), width)
|
||||||
disktest.DiskTest(language, diskTestMethod, diskTestPath, diskMultiCheck)
|
disktest.DiskTest(language, diskTestMethod, diskTestPath, diskMultiCheck, autoChangeDiskTestMethod)
|
||||||
|
} else if diskTestStatus && !autoChangeDiskTestMethod {
|
||||||
|
utils.PrintCenteredTitle(fmt.Sprintf("硬盘测试-通过%s测试", "dd"), width)
|
||||||
|
disktest.DiskTest(language, "dd", diskTestPath, diskMultiCheck, autoChangeDiskTestMethod)
|
||||||
|
utils.PrintCenteredTitle(fmt.Sprintf("硬盘测试-通过%s测试", "fio"), width)
|
||||||
|
disktest.DiskTest(language, "fio", diskTestPath, diskMultiCheck, autoChangeDiskTestMethod)
|
||||||
}
|
}
|
||||||
}, tempOutput, output)
|
}, tempOutput, output)
|
||||||
if onlyChinaTest || pingTestStatus {
|
if onlyChinaTest || pingTestStatus {
|
||||||
@@ -417,6 +431,14 @@ func main() {
|
|||||||
basicInfo, securityInfo, nt3CheckType = utils.SecurityCheck(language, nt3CheckType, securityTestStatus)
|
basicInfo, securityInfo, nt3CheckType = utils.SecurityCheck(language, nt3CheckType, securityTestStatus)
|
||||||
if basicStatus {
|
if basicStatus {
|
||||||
fmt.Printf(basicInfo)
|
fmt.Printf(basicInfo)
|
||||||
|
} else if (input == "6" || input == "9") && securityTestStatus {
|
||||||
|
scanner := bufio.NewScanner(strings.NewReader(basicInfo))
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
if strings.Contains(line, "IPV") {
|
||||||
|
fmt.Println(line)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, tempOutput, output)
|
}, tempOutput, output)
|
||||||
@@ -433,9 +455,14 @@ func main() {
|
|||||||
}
|
}
|
||||||
}, tempOutput, output)
|
}, tempOutput, output)
|
||||||
output = utils.PrintAndCapture(func() {
|
output = utils.PrintAndCapture(func() {
|
||||||
if diskTestStatus {
|
if diskTestStatus && autoChangeDiskTestMethod {
|
||||||
utils.PrintCenteredTitle(fmt.Sprintf("Disk-Test--%s-Method", diskTestMethod), width)
|
utils.PrintCenteredTitle(fmt.Sprintf("Disk-Test--%s-Method", diskTestMethod), width)
|
||||||
disktest.DiskTest(language, diskTestMethod, diskTestPath, diskMultiCheck)
|
disktest.DiskTest(language, diskTestMethod, diskTestPath, diskMultiCheck, autoChangeDiskTestMethod)
|
||||||
|
} else if diskTestStatus && !autoChangeDiskTestMethod {
|
||||||
|
utils.PrintCenteredTitle(fmt.Sprintf("Disk-Test--%s-Method", "dd"), width)
|
||||||
|
disktest.DiskTest(language, "dd", diskTestPath, diskMultiCheck, autoChangeDiskTestMethod)
|
||||||
|
utils.PrintCenteredTitle(fmt.Sprintf("Disk-Test--%s-Method", "fio"), width)
|
||||||
|
disktest.DiskTest(language, "fio", diskTestPath, diskMultiCheck, autoChangeDiskTestMethod)
|
||||||
}
|
}
|
||||||
}, tempOutput, output)
|
}, tempOutput, output)
|
||||||
if utTestStatus {
|
if utTestStatus {
|
||||||
|
64
goecs.sh
64
goecs.sh
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#From https://github.com/oneclickvirt/ecs
|
#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
|
# 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 EE CC SS
|
GG OO OO EE CC SS
|
||||||
GG OO OO EEEEEEEE CC SSSSSSSSSS
|
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
|
||||||
GG GG OO OO EE CC SS
|
GG GG OO OO EE CC SS
|
||||||
GGGGGGGG OOOOOOO EEEEEEEE CCCCCCCCC SSSSSSSSSS
|
GGGGGGGG OOOOOOO EEEEEEEE CCCCCCCCC SSSSSSSSSS
|
||||||
@@ -308,6 +308,16 @@ env_check() {
|
|||||||
_green "Installing unzip"
|
_green "Installing unzip"
|
||||||
${PACKAGE_INSTALL[int]} unzip
|
${PACKAGE_INSTALL[int]} unzip
|
||||||
fi
|
fi
|
||||||
|
if ! command -v systemd-detect-virt >/dev/null 2>&1; then
|
||||||
|
_green "Installing systemd-detect-virt"
|
||||||
|
${PACKAGE_INSTALL[int]} systemd-detect-virt
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
if ! command -v dmidecode >/dev/null 2>&1; then
|
||||||
|
_green "Installing dmidecode"
|
||||||
|
${PACKAGE_INSTALL[int]} dmidecode
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if ! command -v dd >/dev/null 2>&1; then
|
if ! command -v dd >/dev/null 2>&1; then
|
||||||
_green "Installing dd"
|
_green "Installing dd"
|
||||||
${PACKAGE_INSTALL[int]} dd
|
${PACKAGE_INSTALL[int]} dd
|
||||||
@@ -375,33 +385,51 @@ env_check() {
|
|||||||
_green "The next command is: ./goecs.sh install"
|
_green "The next command is: ./goecs.sh install"
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_goecs() {
|
uninstall_goecs() {
|
||||||
rm -rf /root/goecs
|
rm -rf /root/goecs
|
||||||
rm -rf /usr/bin/goecs
|
rm -rf /usr/bin/goecs
|
||||||
_green "The command (goecs) has been deleted."
|
_green "The command (goecs) has been uninstalled."
|
||||||
}
|
}
|
||||||
|
|
||||||
show_help() {
|
show_help() {
|
||||||
cat <<"EOF"
|
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 (使用官方提供的二进制文件以获得更准确的测试结果。)
|
||||||
|
systemd-detect-virt 或 dmidecode (几乎所有类 Unix 系统都有,安装以获得更准确的测试结果。)
|
||||||
|
事实上,sysbench/geekbench 是上述依赖项中唯一必须安装的,没有它们无法测试 CPU 分数。
|
||||||
|
./goecs.sh install 安装 goecs 命令
|
||||||
|
./goecs.sh upgrade 升级 goecs 命令
|
||||||
|
./goecs.sh uninstall 卸载 goecs 命令
|
||||||
|
./goecs.sh help 显示此消息
|
||||||
|
|
||||||
Available commands:
|
Available commands:
|
||||||
|
|
||||||
./goecs.sh env Check and Install package:
|
./goecs.sh env Check and Install package:
|
||||||
sudo (Almost all unix-like systems have it.)
|
sudo (Almost all unix-like systems have it.)
|
||||||
wget (Almost all unix-like systems have it.)
|
tar (Almost all unix-like systems have it.)
|
||||||
tar (Almost all unix-like systems have it.)
|
unzip (Almost all unix-like systems have it.)
|
||||||
unzip (Almost all unix-like systems have it.)
|
dd (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.)
|
||||||
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.)
|
||||||
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.)
|
||||||
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.)
|
||||||
speedtest (Use the officially provided binaries for more accurate test results.)
|
ping (Use the officially provided binaries for more accurate test results.)
|
||||||
ping (Use the officially provided binaries for more accurate test results.)
|
systemd-detect-virt OR dmidecode (Almost all unix-like systems have it, 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.
|
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 install Install goecs command
|
||||||
./goecs.sh upgrade Upgrade 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
|
./goecs.sh help Show this message
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,8 +443,8 @@ case "$1" in
|
|||||||
"install" | "upgrade")
|
"install" | "upgrade")
|
||||||
goecs_check
|
goecs_check
|
||||||
;;
|
;;
|
||||||
"delete")
|
"uninstall")
|
||||||
delete_goecs
|
uninstall_goecs
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "No command found."
|
echo "No command found."
|
||||||
|
@@ -40,8 +40,8 @@ func PrintHead(language string, width int, ecsVersion string) {
|
|||||||
PrintCenteredTitle("VPS Fusion Monster Test", width)
|
PrintCenteredTitle("VPS Fusion Monster Test", width)
|
||||||
fmt.Printf("Version: %s\n", ecsVersion)
|
fmt.Printf("Version: %s\n", ecsVersion)
|
||||||
fmt.Println("Review Channel: https://t.me/vps_reviews\n" +
|
fmt.Println("Review Channel: https://t.me/vps_reviews\n" +
|
||||||
"Go Project URL: https://github.com/oneclickvirt/ecs\n" +
|
"Go Project: https://github.com/oneclickvirt/ecs\n" +
|
||||||
"Shell Project URL: https://github.com/spiritLHLS/ecs")
|
"Shell Project: https://github.com/spiritLHLS/ecs")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,7 +239,8 @@ func PrintAndCapture(f func(), tempOutput, output string) string {
|
|||||||
|
|
||||||
// UploadText 上传文本内容到指定URL
|
// UploadText 上传文本内容到指定URL
|
||||||
func UploadText(absPath string) (string, error) {
|
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
|
token := network.SecurityUploadToken
|
||||||
client := req.DefaultClient()
|
client := req.DefaultClient()
|
||||||
client.SetTimeout(6 * time.Second)
|
client.SetTimeout(6 * time.Second)
|
||||||
@@ -247,24 +248,39 @@ func UploadText(absPath string) (string, error) {
|
|||||||
SetRetryCount(2).
|
SetRetryCount(2).
|
||||||
SetRetryBackoffInterval(1*time.Second, 5*time.Second).
|
SetRetryBackoffInterval(1*time.Second, 5*time.Second).
|
||||||
SetRetryFixedInterval(2 * time.Second)
|
SetRetryFixedInterval(2 * time.Second)
|
||||||
file, _ := os.Open(absPath)
|
file, err := 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)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
|
defer file.Close()
|
||||||
return resp.String(), nil
|
upload := func(url string) (string, error) {
|
||||||
} else {
|
resp, err := client.R().
|
||||||
return "", fmt.Errorf("upload failed with status code: %d", resp.StatusCode)
|
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 strings.ReplaceAll(resp.String(), "https://paste.spiritlhl.net/", "http://hpaste.spiritlhl.net/"), 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 创建结果文件并上传文件
|
// ProcessAndUpload 创建结果文件并上传文件
|
||||||
|
Reference in New Issue
Block a user