golang实战:使用os/exec包执行Linux shell命令、使用flag包解析参数实现k8s kubectl helm部署应用完整代码

package mainimport ( "flag" "fmt" "os" "os/exec" "strings" "time")func main() { var typeName = flag.String("typeName", "kubectl", "Select Deploy Type") //apply.delete install,uninstall var operationName = flag.String("operationName", "apply", "Select Operation Type") var valuesName = flag.String("valuesName", "Values.yaml", "Select Values File") var appName = flag.String("appName", "manifests", "Input App Name") var nsName = flag.String("nsName", "dmgeo-lib", "Input Namespace Name") var whoami, result []byte var err error var cmd *exec.Cmd flag.Parse() cmd = exec.Command("whoami") if whoami, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Println("I am ", strings.Trim(string(whoami), "\n")) if *typeName == "kubectl" { cmd = exec.Command("/bin/bash", "-c", `sudo /usr/bin/kubectl `+*operationName+` -f `+*appName) if result, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(strings.Trim(string(result), "\n")) } if *typeName == "helm" { if *operationName == "install" { cmd = exec.Command("/bin/bash", "-c", `sudo /usr/bin/helm `+*operationName+*appName+*appName+` -f `+*valuesName+` -n `+*nsName) if result, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(strings.Trim(string(result), "\n")) } else if *operationName == "uninstall" { cmd = exec.Command("/bin/bash", "-c", `sudo /usr/bin/helm `+*operationName+*appName+` -n `+*nsName) if result, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(strings.Trim(string(result), "\n")) } } if *typeName == "echo" { cmd = exec.Command("/bin/bash", "-c", `/usr/bin/echo `+*typeName+"-"+*appName+"-"+*operationName+"-"+*valuesName+"-"+*nsName) if result, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(strings.Trim(string(result), "\n")) } time.Sleep(time.Duration(2) * time.Second) fmt.Println("Successfully!!!")}

golang实战:使用os/exec包执行Linux shell命令、使用flag包解析参数实现k8s kubectl helm部署应用完整代码