cfg, err := naglib.ParseConfig(nrpeCfgFile) if err != nil { return err } context := naglib.PluginContext{ NagiosConfig: cfg, ExitStatusTreatment: treatment, } if len(args) == 0 { return errors.New("nag run: executable required") } else { cmd.SilenceUsage = true result, err := naglib.RunPlugin(&context, args[0], args[1:]...) return processPluginResult(context, result, err) } }, } func processPluginResult(context naglib.PluginContext, result naglib.PluginResult, err error) error { for _, msg := range context.Messages { printStatusLine(msg.Severity, msg.Message) } if err == nil { printStatusLine(result.Status, result.Output) } return err }
commandline := cfg.Commands[command] if commandline == "" { // TODO: exit CRITICAL return errors.New(fmt.Sprintf("%s: command %s not known; try %s", cmd.CommandPath(), command, listCmd.CommandPath())) } context := naglib.PluginContext{ NagiosConfig: cfg, ExitStatusTreatment: treatment, } // TODO: add command prefix // TODO: substitute arguments shell := os.ExpandEnv("$SHELL") if len(shell) == 0 { shell = "/bin/bash" } result, err := naglib.RunPlugin(&context, shell, "-c", commandline) return processPluginResult(context, result, err) }, } func init() { RootCmd.AddCommand(checkCmd) addExitStatusFlags(runCmd) }