新增 auto-check 工具:网段扫描+SSH登录+压力测试永久循环工作流
- pkg/discovery: TCP端口探测存活主机,ARP表解析MAC作为设备唯一标识 - pkg/sshclient: SSH连接(密码/密钥认证)与远程命令执行 - pkg/stress: stress-ng/stressapptest 压测(cpu/memory/disk/memnative/full)+温度与dmesg监控 - pkg/report: 检测报告生成(文本/JSON) - pkg/workflow: 永久循环工作流(间隔可配),MAC唯一标识设备,增量测试+状态变化打印 - pkg/config: YAML分类配置(scan/ssh/stress/report/workflow) - cmd: cobra入口,仅 --config 指定配置文件
This commit is contained in:
35
auto-check/cmd/root.go
Normal file
35
auto-check/cmd/root.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var (
|
||||
configFile string // 配置文件路径
|
||||
)
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "auto-check",
|
||||
Short: "自动化设备发现 + SSH 登录 + 远程压力测试工具",
|
||||
Long: `auto-check 是一个自动化运维工具,支持:
|
||||
1. 网段扫描发现存活设备
|
||||
2. 自动 SSH 登录验证
|
||||
3. 远程执行压力测试(CPU/内存/磁盘/网络)
|
||||
|
||||
配置仅从配置文件加载(默认 ./auto-check.yaml)`,
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.PersistentFlags().StringVar(&configFile, "config", "", "配置文件路径 (默认: ./auto-check.yaml)")
|
||||
}
|
||||
|
||||
// Execute 入口:加载配置并启动
|
||||
func Execute() {
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
33
auto-check/cmd/run.go
Normal file
33
auto-check/cmd/run.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"auto-check/pkg/config"
|
||||
"auto-check/pkg/workflow"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var runCmd = &cobra.Command{
|
||||
Use: "run",
|
||||
Short: "启动永久循环工作流:扫描 → 增量压测 → 状态打印",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
// 从配置文件加载配置
|
||||
cfg, err := config.Load(configFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf(" [配置] 加载完成: 网段=%s 间隔=%v 压测=%s\n",
|
||||
cfg.Scan.CIDR, cfg.Workflow.Interval, cfg.Stress.Types)
|
||||
|
||||
// 启动工作流(永久循环)
|
||||
ctx := workflow.NewContext()
|
||||
ctx.Config = *cfg
|
||||
return workflow.Loop(ctx)
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(runCmd)
|
||||
}
|
||||
Reference in New Issue
Block a user