From ade064006e5454b125f073e8a1d5fe4edfd0acff Mon Sep 17 00:00:00 2001 From: Abubakr-Sadik Nii Nai Davis Date: Tue, 10 Apr 2018 19:58:19 +0000 Subject: [PATCH] Add extra output manipulation flags, --noremediations, --nosummary and --noresults. These flags disable printing sections of the final output of kube-bench. --- cmd/common.go | 59 ++++++++++++++++++++++++++++----------------------- cmd/root.go | 8 +++++++ 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/cmd/common.go b/cmd/common.go index 752a337..1d938c2 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -131,41 +131,48 @@ func colorPrint(state check.State, s string) { // prettyPrint outputs the results to stdout in human-readable format func prettyPrint(r *check.Controls, summary check.Summary) { - colorPrint(check.INFO, fmt.Sprintf("%s %s\n", r.ID, r.Text)) - for _, g := range r.Groups { - colorPrint(check.INFO, fmt.Sprintf("%s %s\n", g.ID, g.Text)) - for _, c := range g.Checks { - colorPrint(c.State, fmt.Sprintf("%s %s\n", c.ID, c.Text)) + // Print check results. + if !noResults { + colorPrint(check.INFO, fmt.Sprintf("%s %s\n", r.ID, r.Text)) + for _, g := range r.Groups { + colorPrint(check.INFO, fmt.Sprintf("%s %s\n", g.ID, g.Text)) + for _, c := range g.Checks { + colorPrint(c.State, fmt.Sprintf("%s %s\n", c.ID, c.Text)) + } } - } - fmt.Println() + fmt.Println() + } // Print remediations. - if summary.Fail > 0 || summary.Warn > 0 { - colors[check.WARN].Printf("== Remediations ==\n") - for _, g := range r.Groups { - for _, c := range g.Checks { - if c.State != check.PASS { - fmt.Printf("%s %s\n", c.ID, c.Remediation) + if !noRemediations { + if summary.Fail > 0 || summary.Warn > 0 { + colors[check.WARN].Printf("== Remediations ==\n") + for _, g := range r.Groups { + for _, c := range g.Checks { + if c.State != check.PASS { + fmt.Printf("%s %s\n", c.ID, c.Remediation) + } } } + fmt.Println() } - fmt.Println() } // Print summary setting output color to highest severity. - var res check.State - if summary.Fail > 0 { - res = check.FAIL - } else if summary.Warn > 0 { - res = check.WARN - } else { - res = check.PASS - } + if !noSummary { + var res check.State + if summary.Fail > 0 { + res = check.FAIL + } else if summary.Warn > 0 { + res = check.WARN + } else { + res = check.PASS + } - colors[res].Printf("== Summary ==\n") - fmt.Printf("%d checks PASS\n%d checks FAIL\n%d checks WARN\n", - summary.Pass, summary.Fail, summary.Warn, - ) + colors[res].Printf("== Summary ==\n") + fmt.Printf("%d checks PASS\n%d checks FAIL\n%d checks WARN\n", + summary.Pass, summary.Fail, summary.Warn, + ) + } } diff --git a/cmd/root.go b/cmd/root.go index 76d871a..915d377 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -36,6 +36,9 @@ var ( masterFile string nodeFile string federatedFile string + noResults bool + noSummary bool + noRemediations bool ) // RootCmd represents the base command when called without any subcommands @@ -60,8 +63,13 @@ func Execute() { func init() { cobra.OnInitialize(initConfig) + // Output control + RootCmd.PersistentFlags().BoolVar(&noResults, "noresults", false, "Disable prints of results section") + RootCmd.PersistentFlags().BoolVar(&noSummary, "nosummary", false, "Disable printing of summary section") + RootCmd.PersistentFlags().BoolVar(&noRemediations, "noremediations", false, "Disable printing of remediations section") RootCmd.PersistentFlags().BoolVar(&jsonFmt, "json", false, "Prints the results as JSON") RootCmd.PersistentFlags().BoolVar(&pgSQL, "pgsql", false, "Save the results to PostgreSQL") + RootCmd.PersistentFlags().StringVarP( &checkList, "check",