mirror of
https://github.com/oneclickvirt/ecs.git
synced 2025-09-27 11:42:23 +08:00
Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
955b887039 | ||
![]() |
ac3839a8eb | ||
![]() |
4d2c89dc96 | ||
![]() |
e773e4d0fd | ||
![]() |
d0814ee1da | ||
![]() |
c31c978fc8 | ||
![]() |
040a3db6e2 | ||
![]() |
cd68643df8 | ||
![]() |
5ad59dcd36 | ||
![]() |
476ae5d25f | ||
![]() |
369ae42139 | ||
![]() |
676973d946 | ||
![]() |
3ce8b69065 | ||
![]() |
d752a2fb7f | ||
![]() |
95fba10d0f | ||
![]() |
acebe04732 | ||
![]() |
226f751655 | ||
![]() |
18a0de4c4e | ||
![]() |
e5f29dc46c | ||
![]() |
c94d0133fc | ||
![]() |
7cd1e9190b | ||
![]() |
df735880fe |
1
.github/workflows/main.yaml
vendored
1
.github/workflows/main.yaml
vendored
@@ -35,4 +35,3 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
GOPRIVATE: github.com/oneclickvirt/security
|
||||
CGO_ENABLED: 0 # 禁用 CGO,强制静态链接
|
||||
|
50
.goreleaser.yaml
Normal file
50
.goreleaser.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
before:
|
||||
hooks:
|
||||
- go mod download
|
||||
- go generate ./...
|
||||
builds:
|
||||
- env:
|
||||
- CGO_ENABLED=0 # 禁用 CGO,强制静态链接
|
||||
goos:
|
||||
- linux
|
||||
- windows
|
||||
- darwin
|
||||
- openbsd
|
||||
- freebsd
|
||||
goarch:
|
||||
- amd64
|
||||
- arm
|
||||
- arm64
|
||||
- 386
|
||||
- s390x
|
||||
- ppc64
|
||||
- ppc64le
|
||||
- riscv64
|
||||
- mips
|
||||
- mips64
|
||||
- mipsle
|
||||
- mips64le
|
||||
- loong64
|
||||
goarm:
|
||||
- 5
|
||||
- 6
|
||||
- 7
|
||||
gomips:
|
||||
- hardfloat
|
||||
- softfloat
|
||||
ldflags:
|
||||
- -s -w -X main.version={{.Version}} -X main.commit={{.ShortCommit}} -X main.date={{ .CommitDate }}
|
||||
archives:
|
||||
- name_template: >-
|
||||
{{ .ProjectName }}_{{ .Version }}_{{ if eq .Os "openbsd" }}OpenBSD{{ else }}{{ title .Os }}{{ end }}_{{ if eq .Arch "386" }}i386{{ else if eq .Arch "amd64" }}x86_64{{ else }}{{ .Arch }}{{ end }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}
|
||||
|
||||
checksum:
|
||||
name_template: 'checksums.txt'
|
||||
snapshot:
|
||||
name_template: "{{ .Tag }}-next"
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- '^docs:'
|
||||
- '^test:'
|
18
README.md
18
README.md
@@ -6,6 +6,10 @@
|
||||
|
||||
Shell版本: https://github.com/spiritLHLS/ecs
|
||||
|
||||
## 语言
|
||||
|
||||
[中文文档](README.md) | [English Docs](README_EN.md)
|
||||
|
||||
## 适配系统和架构
|
||||
|
||||
已支持的架构: x86_64、i386、arm64
|
||||
@@ -34,6 +38,20 @@ Shell版本: https://github.com/spiritLHLS/ecs
|
||||
|
||||
## Linux上使用的说明
|
||||
|
||||
### 一键命令
|
||||
|
||||
```
|
||||
curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && bash goecs.sh env && bash goecs.sh install && goecs
|
||||
```
|
||||
|
||||
或
|
||||
|
||||
```
|
||||
curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && bash goecs.sh env && bash goecs.sh install && goecs
|
||||
```
|
||||
|
||||
### 详细说明
|
||||
|
||||
下载脚本
|
||||
|
||||
```
|
||||
|
177
README_EN.md
Normal file
177
README_EN.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# ecs
|
||||
|
||||
[](https://github.com/oneclickvirt/ecs/actions/workflows/main.yaml) [](https://www.spiritlhl.net/)
|
||||
|
||||
Fusion Monster Evaluation Script - GO Refactored Version - Since it has not been officially released, please report any issues via issues.
|
||||
|
||||
Shell version: https://github.com/spiritLHLS/ecs/blob/main/README_EN.md
|
||||
|
||||
## Language
|
||||
|
||||
[中文文档](README.md) | [English Docs](README_EN.md)
|
||||
|
||||
## Supported Systems and Architectures
|
||||
|
||||
Supported architectures: x86_64, i386, arm64
|
||||
|
||||
Pending support (due to unsupported dependencies): s390x
|
||||
|
||||
Supported systems: Linux, Windows
|
||||
|
||||
Pending support (due to unresolved hardware testing bugs): MacOS
|
||||
|
||||
## Features
|
||||
|
||||
- [x] System basic information query [Self-developed [basics](https://github.com/oneclickvirt/basics), [gostun](https://github.com/oneclickvirt/gostun)]
|
||||
- [x] Concurrent IP basic information query [Self-developed [basics](https://github.com/oneclickvirt/basics)]
|
||||
- [x] CPU test [Self-developed [cputest](https://github.com/oneclickvirt/cputest) supporting sysbench, geekbench, winsat]
|
||||
- [x] Memory test [Self-developed [memorytest](https://github.com/oneclickvirt/memorytest) supporting sysbench, dd]
|
||||
- [x] Disk test [Self-developed [disktest](https://github.com/oneclickvirt/disktest) supporting dd, fio, winsat]
|
||||
- [x] Concurrent streaming media unlock information query for three major platforms [Modified from [netflix-verify](https://github.com/sjlleo/netflix-verify), [VerifyDisneyPlus](https://github.com/sjlleo/VerifyDisneyPlus), [TubeCheck](https://github.com/sjlleo/TubeCheck) to [CommonMediaTests](https://github.com/oneclickvirt/CommonMediaTests)]
|
||||
- [x] Concurrent common streaming media tests [Self-developed code, logic modified from [RegionRestrictionCheck](https://github.com/lmc999/RegionRestrictionCheck), [MediaUnlockTest](https://github.com/HsukqiLee/MediaUnlockTest) to [UnlockTests](https://github.com/oneclickvirt/UnlockTests)]
|
||||
- [x] Concurrent IP quality/security information query [Self-developed, due to testing with key information, privately developed, but binary files compiled in [securityCheck](https://github.com/oneclickvirt/securityCheck)]
|
||||
- [x] Email port test [Self-developed [portchecker](https://github.com/oneclickvirt/portchecker)]
|
||||
- [x] Three-network return path test [Modified from [zhanghanyun/backtrace](https://github.com/zhanghanyun/backtrace) to [oneclickvirt/backtrace](https://github.com/oneclickvirt/backtrace)]
|
||||
- [x] Three-network route test [Modified from [NTrace-core](https://github.com/nxtrace/NTrace-core) to [nt3](https://github.com/oneclickvirt/nt3)]
|
||||
- [x] Speed test [Based on data from [speedtest.net-crawler](https://github.com/spiritLHLS/speedtest.net-CN-ID), [speedtest.cn-crawler](https://github.com/spiritLHLS/speedtest.cn-CN-ID), modified from [speedtest-go](https://github.com/showwin/speedtest-go) to [oneclickvirt/speedtest](https://github.com/oneclickvirt/speedtest)]
|
||||
- [x] Three-network Ping test [Modified from [ecsspeed](https://github.com/spiritLHLS/ecsspeed) logic to [pingtest](https://github.com/oneclickvirt/pingtest)]
|
||||
|
||||
## Instructions for Use on Linux
|
||||
|
||||
### one-click command
|
||||
|
||||
```
|
||||
curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && bash goecs.sh env && bash goecs.sh install && goecs
|
||||
```
|
||||
|
||||
### explain in detail
|
||||
|
||||
Download the script
|
||||
|
||||
```
|
||||
curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh
|
||||
```
|
||||
|
||||
Install environment
|
||||
|
||||
```
|
||||
./goecs.sh env
|
||||
```
|
||||
|
||||
Install goecs
|
||||
|
||||
```
|
||||
./goecs.sh install
|
||||
```
|
||||
|
||||
Upgrade goecs
|
||||
|
||||
```
|
||||
./goecs.sh upgrade
|
||||
```
|
||||
|
||||
Uninstall goecs
|
||||
|
||||
```
|
||||
./goecs.sh delete
|
||||
```
|
||||
|
||||
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.)
|
||||
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
|
||||
```
|
||||
|
||||
Invoke the goecs menu
|
||||
|
||||
```
|
||||
goecs
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
./goecs
|
||||
```
|
||||
|
||||
Parameterized goecs command
|
||||
|
||||
```
|
||||
Usage: goecs [options]
|
||||
-backtrace
|
||||
Enable/Disable backtrace test (in 'en' language or on windows it always false) (default true)
|
||||
-basic
|
||||
Enable/Disable basic test (default true)
|
||||
-comm
|
||||
Enable/Disable common media test (default true)
|
||||
-cpu
|
||||
Enable/Disable CPU test (default true)
|
||||
-cpum string
|
||||
Set CPU test method (supported: sysbench, geekbench, winsat) (default "sysbench")
|
||||
-cput string
|
||||
Set CPU test thread mode (supported: single, multi) (default "multi")
|
||||
-disk
|
||||
Enable/Disable disk test (default true)
|
||||
-diskm string
|
||||
Set disk test method (supported: fio, dd, winsat) (default "fio")
|
||||
-diskmc
|
||||
Enable/Disable multiple disk checks, e.g., -diskmc=false
|
||||
-diskp string
|
||||
Set disk test path, e.g., -diskp /root
|
||||
-email
|
||||
Enable/Disable email port test (default true)
|
||||
-h Show help information
|
||||
-l string
|
||||
Set language (supported: en, zh) (default "zh")
|
||||
-log
|
||||
Enable/Disable logging in the current path
|
||||
-memory
|
||||
Enable/Disable memory test (default true)
|
||||
-memorym string
|
||||
Set memory test method (supported: sysbench, dd, winsat) (default "dd")
|
||||
-menu
|
||||
Enable/Disable menu mode, disable example: -menu=false (default true)
|
||||
-nt3
|
||||
Enable/Disable NT3 test (in 'en' language or on windows it always false) (default true)
|
||||
-nt3loc string
|
||||
Specify NT3 test location (supported: GZ, SH, BJ, CD for Guangzhou, Shanghai, Beijing, Chengdu) (default "GZ")
|
||||
-nt3t string
|
||||
Set NT3 test type (supported: both, ipv4, ipv6) (default "ipv4")
|
||||
-security
|
||||
Enable/Disable security test (default true)
|
||||
-speed
|
||||
Enable/Disable speed test (default true)
|
||||
-spnum int
|
||||
Set the number of servers per operator for speed test (default 2)
|
||||
-ut
|
||||
Enable/Disable unlock media test (default true)
|
||||
-v Display version information
|
||||
```
|
||||
|
||||
## Instructions for Use on Windows
|
||||
|
||||
Download the compressed file with the exe file
|
||||
|
||||
https://github.com/oneclickvirt/ecs/releases
|
||||
|
||||
Find the latest version, download the .tar.gz file corresponding to your architecture, and unzip it to get an exe file.
|
||||
|
||||
Right-click the exe file and select Run as administrator (running without administrator mode will not allow hardware testing), and invoke the menu to choose.
|
||||
|
||||
No environment installation is required for Windows testing.
|
4
go.mod
4
go.mod
@@ -5,12 +5,12 @@ 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.10-20240630044930
|
||||
github.com/oneclickvirt/UnlockTests v0.0.11-20240704101006
|
||||
github.com/oneclickvirt/backtrace v0.0.4-20240702140722
|
||||
github.com/oneclickvirt/basics v0.0.5-20240702055351
|
||||
github.com/oneclickvirt/cputest v0.0.8-20240702070215
|
||||
github.com/oneclickvirt/defaultset v0.0.2-20240624082446
|
||||
github.com/oneclickvirt/disktest v0.0.4-20240702071738
|
||||
github.com/oneclickvirt/disktest v0.0.4-20240704095213
|
||||
github.com/oneclickvirt/gostun v0.0.3-20240702054621
|
||||
github.com/oneclickvirt/memorytest v0.0.2-20240702031042
|
||||
github.com/oneclickvirt/nt3 v0.0.3-20240702132013
|
||||
|
8
go.sum
8
go.sum
@@ -77,8 +77,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.10-20240630044930 h1:/Sc4Eas1Pso18ak93wlazkuMKRRElCntITja/0opOpM=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.10-20240630044930/go.mod h1:HP3CvAS+AJWxxY+BVbxIOlvaQ87YOSge89vAMG52b5o=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.11-20240704101006 h1:dJyfuPFwmueK7x0TC/PZU1jfgB6s15T9VOwjMn13loY=
|
||||
github.com/oneclickvirt/UnlockTests v0.0.11-20240704101006/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.5-20240702055351 h1:Ez9iLNAr+A8AA3EdcDh1aB/XVSWjwSKjhgMUySkcSSY=
|
||||
@@ -87,8 +87,8 @@ github.com/oneclickvirt/cputest v0.0.8-20240702070215 h1:CcFpyVPlQkJ6vjFP17BRuJh
|
||||
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/go.mod h1:e9Jt4tf2sbemCtc84/XgKcHy9EZ2jkc5x2sW1NiJS+E=
|
||||
github.com/oneclickvirt/disktest v0.0.4-20240702071738 h1:3rErTS9RwU8jAmGc8LqjtFBBd94lIk+wSWpohI55C/w=
|
||||
github.com/oneclickvirt/disktest v0.0.4-20240702071738/go.mod h1:wIZy8G6Mbcy8Op8tc0HmJNpbJQQ5A15fvnUqMJXIdO0=
|
||||
github.com/oneclickvirt/disktest v0.0.4-20240704095213 h1:ATIc0VeFBnYvfKjJCtDZS6hTxTU9nTFvUmfzGkr6Clw=
|
||||
github.com/oneclickvirt/disktest v0.0.4-20240704095213/go.mod h1:wIZy8G6Mbcy8Op8tc0HmJNpbJQQ5A15fvnUqMJXIdO0=
|
||||
github.com/oneclickvirt/gostun v0.0.3-20240702054621 h1:IE89eEYV9TJbF94SakQDAxTLIaqX+Tb6ZhJ/CCIP+90=
|
||||
github.com/oneclickvirt/gostun v0.0.3-20240702054621/go.mod h1:f7DPEXAxbmwXSW33dbxtb0/KzqvOBWhTs2Or5xBerQA=
|
||||
github.com/oneclickvirt/memorytest v0.0.2-20240702031042 h1:j+LsjOh5glYiidqtSqjZJRw694LYW1PHLMh6AovluTQ=
|
||||
|
56
goecs.go
56
goecs.go
@@ -4,6 +4,7 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/oneclickvirt/CommonMediaTests/commediatests"
|
||||
unlocktestmodel "github.com/oneclickvirt/UnlockTests/model"
|
||||
backtraceori "github.com/oneclickvirt/backtrace/bk"
|
||||
basicmodel "github.com/oneclickvirt/basics/model"
|
||||
cputestmodel "github.com/oneclickvirt/cputest/model"
|
||||
@@ -36,7 +37,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
ecsVersion = "v0.0.34"
|
||||
ecsVersion = "v0.0.40"
|
||||
menuMode bool
|
||||
onlyChinaTest bool
|
||||
input, choice string
|
||||
@@ -85,6 +86,7 @@ func main() {
|
||||
goecsFlag.StringVar(&nt3CheckType, "nt3t", "ipv4", "Set NT3 test type (supported: both, ipv4, ipv6)")
|
||||
goecsFlag.IntVar(&spNum, "spnum", 2, "Set the number of servers per operator for speed test")
|
||||
goecsFlag.BoolVar(&enableLogger, "log", false, "Enable/Disable logging in the current path")
|
||||
goecsFlag.BoolVar(&enabelUpload, "upload", true, "Enable/Disable upload the result")
|
||||
goecsFlag.Parse(os.Args[1:])
|
||||
if help {
|
||||
fmt.Printf("Usage: %s [options]\n", os.Args[0])
|
||||
@@ -104,6 +106,7 @@ func main() {
|
||||
memorytestmodel.EnableLoger = true
|
||||
disktestmodel.EnableLoger = true
|
||||
commediatests.EnableLoger = true
|
||||
unlocktestmodel.EnableLoger = true
|
||||
ptmodel.EnableLoger = true
|
||||
backtraceori.EnableLoger = true
|
||||
nt3model.EnableLoger = true
|
||||
@@ -245,16 +248,31 @@ func main() {
|
||||
backtraceStatus = false
|
||||
nt3Status = false
|
||||
}
|
||||
startTime := time.Now()
|
||||
if !enabelUpload {
|
||||
securityTestStatus = false
|
||||
}
|
||||
var (
|
||||
startTime time.Time
|
||||
wg1, wg2 sync.WaitGroup
|
||||
basicInfo, securityInfo, emailInfo, mediaInfo string
|
||||
output, tempOutput string
|
||||
)
|
||||
// 启动一个goroutine来等待信号
|
||||
// 启动一个goroutine来等待信号,内置计时器
|
||||
go func() {
|
||||
startTime = time.Now()
|
||||
// 等待信号
|
||||
<-sig
|
||||
endTime := time.Now()
|
||||
duration := endTime.Sub(startTime)
|
||||
minutes := int(duration.Minutes())
|
||||
seconds := int(duration.Seconds()) % 60
|
||||
currentTime := time.Now().Format("Mon Jan 2 15:04:05 MST 2006")
|
||||
output = utils.PrintAndCapture(func() {
|
||||
utils.PrintCenteredTitle("", width)
|
||||
fmt.Printf("Cost Time : %d min %d sec\n", minutes, seconds)
|
||||
fmt.Printf("Current Time : %s\n", currentTime)
|
||||
utils.PrintCenteredTitle("", width)
|
||||
}, tempOutput, output)
|
||||
utils.ProcessAndUpload(output, filePath, enabelUpload)
|
||||
os.Exit(1) // 使用非零状态码退出,表示意外退出
|
||||
}()
|
||||
@@ -382,7 +400,7 @@ func main() {
|
||||
utils.PrintHead(language, width, ecsVersion)
|
||||
if basicStatus || securityTestStatus {
|
||||
if basicStatus {
|
||||
utils.PrintCenteredTitle("System Basic Information", width)
|
||||
utils.PrintCenteredTitle("System-Basic-Information", width)
|
||||
}
|
||||
basicInfo, securityInfo, nt3CheckType = utils.SecurityCheck(language, nt3CheckType, securityTestStatus)
|
||||
if basicStatus {
|
||||
@@ -392,51 +410,59 @@ func main() {
|
||||
}, tempOutput, output)
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if cpuTestStatus {
|
||||
utils.PrintCenteredTitle(fmt.Sprintf("CPU Test - %s Method", cpuTestMethod), width)
|
||||
utils.PrintCenteredTitle(fmt.Sprintf("CPU-Test--%s-Method", cpuTestMethod), width)
|
||||
cputest.CpuTest(language, cpuTestMethod, cpuTestThreadMode)
|
||||
}
|
||||
}, tempOutput, output)
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if memoryTestStatus {
|
||||
utils.PrintCenteredTitle(fmt.Sprintf("Memory Test - %s Method", memoryTestMethod), width)
|
||||
utils.PrintCenteredTitle(fmt.Sprintf("Memory-Test--%s-Method", memoryTestMethod), width)
|
||||
memorytest.MemoryTest(language, memoryTestMethod)
|
||||
}
|
||||
}, tempOutput, output)
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if diskTestStatus {
|
||||
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)
|
||||
}
|
||||
}, tempOutput, output)
|
||||
if emailTestStatus {
|
||||
if utTestStatus {
|
||||
wg1.Add(1)
|
||||
go func() {
|
||||
defer wg1.Done()
|
||||
mediaInfo = unlocktest.MediaTest(language)
|
||||
}()
|
||||
}
|
||||
if emailTestStatus {
|
||||
wg2.Add(1)
|
||||
go func() {
|
||||
defer wg2.Done()
|
||||
emailInfo = email.EmailCheck()
|
||||
}()
|
||||
}
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if utTestStatus {
|
||||
utils.PrintCenteredTitle("Cross-Border Streaming Media Unlock", width)
|
||||
unlocktest.MediaTest(language)
|
||||
utils.PrintCenteredTitle("Cross-Border-Streaming-Media-Unlock", width)
|
||||
wg1.Wait()
|
||||
fmt.Printf(mediaInfo)
|
||||
}
|
||||
}, tempOutput, output)
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if securityTestStatus {
|
||||
utils.PrintCenteredTitle("IP Quality Check", width)
|
||||
utils.PrintCenteredTitle("IP-Quality-Check", width)
|
||||
fmt.Printf(securityInfo)
|
||||
}
|
||||
}, tempOutput, output)
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if emailTestStatus {
|
||||
utils.PrintCenteredTitle("Email Port Check", width)
|
||||
wg1.Wait()
|
||||
utils.PrintCenteredTitle("Email-Port-Check", width)
|
||||
wg2.Wait()
|
||||
fmt.Println(emailInfo)
|
||||
}
|
||||
}, tempOutput, output)
|
||||
output = utils.PrintAndCapture(func() {
|
||||
if speedTestStatus {
|
||||
utils.PrintCenteredTitle("Nearby Node Speed Test", width)
|
||||
utils.PrintCenteredTitle("Speed-Test", width)
|
||||
speedtest.ShowHead(language)
|
||||
speedtest.NearbySP()
|
||||
speedtest.CustomSP("net", "global", -1, language)
|
||||
@@ -449,7 +475,7 @@ func main() {
|
||||
currentTime := time.Now().Format("Mon Jan 2 15:04:05 MST 2006")
|
||||
output = utils.PrintAndCapture(func() {
|
||||
utils.PrintCenteredTitle("", width)
|
||||
fmt.Printf("Cost Time : %d 分 %d 秒\n", minutes, seconds)
|
||||
fmt.Printf("Cost Time : %d min %d sec\n", minutes, seconds)
|
||||
fmt.Printf("Current Time : %s\n", currentTime)
|
||||
utils.PrintCenteredTitle("", width)
|
||||
}, tempOutput, output)
|
||||
|
80
goecs.sh
80
goecs.sh
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#From https://github.com/oneclickvirt/ecs
|
||||
#2024.06.29
|
||||
#2024.07.04
|
||||
|
||||
# curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh
|
||||
|
||||
@@ -80,7 +80,7 @@ goecs_check() {
|
||||
cdn_urls=("https://cdn0.spiritlhl.top/" "http://cdn3.spiritlhl.net/" "http://cdn1.spiritlhl.net/" "http://cdn2.spiritlhl.net/")
|
||||
check_cdn_file
|
||||
case $os in
|
||||
Linux)
|
||||
Linux|FreeBSD)
|
||||
case $arch in
|
||||
"x86_64" | "x86" | "amd64" | "x64")
|
||||
wget -O goecs.tar.gz "${cdn_success_url}https://github.com/oneclickvirt/ecs/releases/download/v${ECS_VERSION}/ecs_${ECS_VERSION}_linux_amd64.tar.gz"
|
||||
@@ -126,6 +126,8 @@ goecs_check() {
|
||||
rm -rf /usr/bin/goecs
|
||||
sleep 1
|
||||
cp goecs /usr/bin/goecs
|
||||
rm -rf README_EN.md
|
||||
rm -rf README.md
|
||||
echo "goecs version:"
|
||||
goecs -v || ./goecs -v
|
||||
}
|
||||
@@ -181,8 +183,7 @@ Check_SysBench() {
|
||||
_yellow "Install sysbench successfully!"
|
||||
else
|
||||
_red "SysBench Moudle install Failure! Try Restart Bench or Manually install it! (/usr/bin/sysbench)"
|
||||
_blue "Will try to test with geekbench5 instead later on"
|
||||
test_cpu_type="gb5"
|
||||
_blue "Will try to test with geekbench5 instead later."
|
||||
fi
|
||||
sleep 3
|
||||
}
|
||||
@@ -233,57 +234,75 @@ env_check() {
|
||||
PACKAGE_INSTALL=("apt-get -y install" "apt-get -y install" "yum -y install" "yum -y install" "yum -y install" "pacman -Sy --noconfirm --needed" "pkg install -y" "apk add")
|
||||
PACKAGE_REMOVE=("apt-get -y remove" "apt-get -y remove" "yum -y remove" "yum -y remove" "yum -y remove" "pacman -Rsc --noconfirm" "pkg delete" "apk del")
|
||||
PACKAGE_UNINSTALL=("apt-get -y autoremove" "apt-get -y autoremove" "yum -y autoremove" "yum -y autoremove" "yum -y autoremove" "" "pkg autoremove" "apk autoremove")
|
||||
if [ -s /etc/os-release ]; then
|
||||
SYS="$(grep -i pretty_name /etc/os-release | cut -d \" -f2)"
|
||||
# 检查系统信息
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
SYS="alpine"
|
||||
elif [ -s /etc/os-release ]; then
|
||||
SYS="$(grep -i pretty_name /etc/os-release | cut -d \" -f2)"
|
||||
elif [ -x "$(type -p hostnamectl)" ]; then
|
||||
SYS="$(hostnamectl | grep -i system | cut -d : -f2)"
|
||||
SYS="$(hostnamectl | grep -i system | cut -d : -f2 | xargs)"
|
||||
elif [ -x "$(type -p lsb_release)" ]; then
|
||||
SYS="$(lsb_release -sd)"
|
||||
SYS="$(lsb_release -sd)"
|
||||
elif [ -s /etc/lsb-release ]; then
|
||||
SYS="$(grep -i description /etc/lsb-release | cut -d \" -f2)"
|
||||
SYS="$(grep -i description /etc/lsb-release | cut -d \" -f2)"
|
||||
elif [ -s /etc/redhat-release ]; then
|
||||
SYS="$(grep . /etc/redhat-release)"
|
||||
SYS="$(grep . /etc/redhat-release)"
|
||||
elif [ -s /etc/issue ]; then
|
||||
SYS="$(grep . /etc/issue | cut -d '\' -f1 | sed '/^[ ]*$/d')"
|
||||
elif [ -f /etc/alpine-release ]; then
|
||||
SYS="alpine"
|
||||
SYS="$(grep . /etc/issue | cut -d '\' -f1 | sed '/^[ ]*$/d')"
|
||||
else
|
||||
SYS="$(uname -s)}"
|
||||
SYS="$(uname -s)"
|
||||
fi
|
||||
[[ -n $SYS ]] || exit 1
|
||||
# 匹配操作系统
|
||||
for ((int = 0; int < ${#REGEX[@]}; int++)); do
|
||||
if [[ $(echo "$SYS" | tr '[:upper:]' '[:lower:]') =~ ${REGEX[int]} ]]; then
|
||||
SYSTEM="${RELEASE[int]}"
|
||||
[[ -n $SYSTEM ]] && break
|
||||
fi
|
||||
done
|
||||
# 检查是否成功匹配
|
||||
[[ -n $SYSTEM ]] || exit 1
|
||||
# 根据 SYSTEM 设置相应的包管理命令
|
||||
UPDATE_CMD=${PACKAGE_UPDATE[int]}
|
||||
INSTALL_CMD=${PACKAGE_INSTALL[int]}
|
||||
REMOVE_CMD=${PACKAGE_REMOVE[int]}
|
||||
UNINSTALL_CMD=${PACKAGE_UNINSTALL[int]}
|
||||
echo "System: $SYSTEM"
|
||||
echo "Update command: $UPDATE_CMD"
|
||||
echo "Install command: $INSTALL_CMD"
|
||||
echo "Remove command: $REMOVE_CMD"
|
||||
echo "Uninstall command: $UNINSTALL_CMD"
|
||||
cdn_urls=("https://cdn0.spiritlhl.top/" "http://cdn3.spiritlhl.net/" "http://cdn1.spiritlhl.net/" "http://cdn2.spiritlhl.net/")
|
||||
check_cdn_file
|
||||
_green "Update system manager."
|
||||
$PACKAGE_UPDATE command 2>/dev/null
|
||||
${PACKAGE_UPDATE[int]} 2>/dev/null
|
||||
if ! command -v sudo >/dev/null 2>&1; then
|
||||
_green "Installing sudo"
|
||||
$PACKAGE_INSTALL sudo
|
||||
fi
|
||||
_green "Installing sudo"
|
||||
${PACKAGE_INSTALL[int]} sudo
|
||||
fi
|
||||
if ! command -v wget >/dev/null 2>&1; then
|
||||
_green "Installing wget"
|
||||
${PACKAGE_INSTALL[int]} wget
|
||||
fi
|
||||
if ! command -v tar >/dev/null 2>&1; then
|
||||
_green "Installing tar"
|
||||
$PACKAGE_INSTALL tar
|
||||
${PACKAGE_INSTALL[int]} tar
|
||||
fi
|
||||
if ! command -v unzip >/dev/null 2>&1; then
|
||||
_green "Installing unzip"
|
||||
$PACKAGE_INSTALL unzip
|
||||
${PACKAGE_INSTALL[int]} unzip
|
||||
fi
|
||||
if ! command -v dd >/dev/null 2>&1; then
|
||||
_green "Installing dd"
|
||||
$PACKAGE_INSTALL dd
|
||||
${PACKAGE_INSTALL[int]} dd
|
||||
fi
|
||||
if ! command -v fio >/dev/null 2>&1; then
|
||||
_green "Installing fio"
|
||||
$PACKAGE_INSTALL fio
|
||||
${PACKAGE_INSTALL[int]} fio
|
||||
fi
|
||||
if ! command -v sysbench >/dev/null 2>&1; then
|
||||
_green "Installing sysbench"
|
||||
$PACKAGE_INSTALL sysbench
|
||||
${PACKAGE_INSTALL[int]} sysbench
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Unable to download sysbench through the system's package manager, speak to try compiling and installing it..."
|
||||
if ! wget -O /tmp/sysbench.zip "${cdn_success_url}https://github.com/akopytov/sysbench/archive/1.0.20.zip"; then
|
||||
@@ -295,6 +314,7 @@ env_check() {
|
||||
fi
|
||||
chmod +x /tmp/sysbench.zip
|
||||
unzip /tmp/sysbench.zip -d /tmp
|
||||
Check_SysBench
|
||||
fi
|
||||
fi
|
||||
if ! command -v geekbench >/dev/null 2>&1; then
|
||||
@@ -314,6 +334,7 @@ env_check() {
|
||||
curl -L "${cdn_success_url}https://raw.githubusercontent.com/oneclickvirt/speedtest/main/dspt.sh" -o dspt.sh && chmod +x dspt.sh
|
||||
bash dspt.sh
|
||||
rm -rf dspt.sh
|
||||
rm -rf speedtest.tar.gz
|
||||
_blue "if you want to use golang origin speedtest, you can use"
|
||||
echo "rm -rf /usr/bin/speedtest"
|
||||
echo "rm -rf /usr/bin/speedtest-go"
|
||||
@@ -335,11 +356,13 @@ env_check() {
|
||||
fi
|
||||
fi
|
||||
_green "The environment is ready."
|
||||
_green "The next command is: ./goecs.sh install"
|
||||
}
|
||||
|
||||
delete_goecs() {
|
||||
rm -rf /root/goecs
|
||||
rm -rf /usr/bin/goecs
|
||||
_green "The command (goecs) has been deleted."
|
||||
}
|
||||
|
||||
show_help() {
|
||||
@@ -347,12 +370,13 @@ show_help() {
|
||||
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.)
|
||||
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.)
|
||||
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.)
|
||||
|
Reference in New Issue
Block a user