一、CLI 工具开发
1.1 使用 Cobra 框架
package main
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
var (
verbose bool
config string
)
// 根命令
var rootCmd = &cobra.Command{
Use: "ops-tool",
Short: "运维工具集",
Long: `一个功能强大的运维命令行工具集,提供服务器管理、部署、监控等功能。`,
}
// 服务器管理命令
var serverCmd = &cobra.Command{
Use: "server",
Short: "服务器管理",
}
var serverListCmd = &cobra.Command{
Use: "list",
Short: "列出所有服务器",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("服务器列表:")
fmt.Println(" web-01 10.0.0.1 running")
fmt.Println(" web-02 10.0.0.2 running")
fmt.Println(" db-01 10.0.0.10 running")
},
}
var serverCheckCmd = &cobra.Command{
Use: "check [server-name]",
Short: "检查服务器状态",
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
serverName := args[0]
if verbose {
fmt.Printf("详细检查服务器: %s\n", serverName)
fmt.Println(" CPU: 45%")
fmt.Println(" Memory: 60%")
fmt.Println(" Disk: 35%")
} else {
fmt.Printf("服务器 %s: 正常\n", serverName)
}
},
}
// 部署命令
var deployCmd = &cobra.Command{
Use: "deploy [service]",
Short: "部署服务",
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
service := args[0]
env, _ := cmd.Flags().GetString("env")
version, _ := cmd.Flags().GetString("version")
fmt.Printf("部署服务: %s\n", service)
fmt.Printf(" 环境: %s\n", env)
fmt.Printf(" 版本: %s\n", version)
fmt.Printf(" 配置: %s\n", config)
},
}
func init() {
// 全局标志
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "详细输出")
rootCmd.PersistentFlags().StringVarP(&config, "config", "c", "", "配置文件路径")
// 部署命令标志
deployCmd.Flags().StringP("env", "e", "production", "部署环境")
deployCmd.Flags().StringP("version", "V", "latest", "版本号")
// 构建命令树
serverCmd.AddCommand(serverListCmd)
serverCmd.AddCommand(serverCheckCmd)
rootCmd.AddCommand(serverCmd)
rootCmd.AddCommand(deployCmd)
}
func main() {
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
2026/3/20大约 8 分钟