1
0
mirror of https://github.com/aquasecurity/kube-bench.git synced 2024-12-01 12:28:18 +00:00

Add extra output manipulation flags, --noremediations, --nosummary and

--noresults.

These flags disable printing sections of the final output of kube-bench.
This commit is contained in:
Abubakr-Sadik Nii Nai Davis 2018-04-10 19:58:19 +00:00
parent ef6c017f54
commit ade064006e
2 changed files with 43 additions and 28 deletions

View File

@ -131,41 +131,48 @@ func colorPrint(state check.State, s string) {
// prettyPrint outputs the results to stdout in human-readable format // prettyPrint outputs the results to stdout in human-readable format
func prettyPrint(r *check.Controls, summary check.Summary) { func prettyPrint(r *check.Controls, summary check.Summary) {
colorPrint(check.INFO, fmt.Sprintf("%s %s\n", r.ID, r.Text)) // Print check results.
for _, g := range r.Groups { if !noResults {
colorPrint(check.INFO, fmt.Sprintf("%s %s\n", g.ID, g.Text)) colorPrint(check.INFO, fmt.Sprintf("%s %s\n", r.ID, r.Text))
for _, c := range g.Checks {
colorPrint(c.State, fmt.Sprintf("%s %s\n", c.ID, c.Text))
}
}
fmt.Println()
// Print remediations.
if summary.Fail > 0 || summary.Warn > 0 {
colors[check.WARN].Printf("== Remediations ==\n")
for _, g := range r.Groups { for _, g := range r.Groups {
colorPrint(check.INFO, fmt.Sprintf("%s %s\n", g.ID, g.Text))
for _, c := range g.Checks { for _, c := range g.Checks {
if c.State != check.PASS { colorPrint(c.State, fmt.Sprintf("%s %s\n", c.ID, c.Text))
fmt.Printf("%s %s\n", c.ID, c.Remediation)
}
} }
} }
fmt.Println() fmt.Println()
} }
// Print summary setting output color to highest severity. // Print remediations.
var res check.State if !noRemediations {
if summary.Fail > 0 { if summary.Fail > 0 || summary.Warn > 0 {
res = check.FAIL colors[check.WARN].Printf("== Remediations ==\n")
} else if summary.Warn > 0 { for _, g := range r.Groups {
res = check.WARN for _, c := range g.Checks {
} else { if c.State != check.PASS {
res = check.PASS fmt.Printf("%s %s\n", c.ID, c.Remediation)
}
}
}
fmt.Println()
}
} }
colors[res].Printf("== Summary ==\n") // Print summary setting output color to highest severity.
fmt.Printf("%d checks PASS\n%d checks FAIL\n%d checks WARN\n", if !noSummary {
summary.Pass, summary.Fail, summary.Warn, 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,
)
}
} }

View File

@ -36,6 +36,9 @@ var (
masterFile string masterFile string
nodeFile string nodeFile string
federatedFile string federatedFile string
noResults bool
noSummary bool
noRemediations bool
) )
// RootCmd represents the base command when called without any subcommands // RootCmd represents the base command when called without any subcommands
@ -60,8 +63,13 @@ func Execute() {
func init() { func init() {
cobra.OnInitialize(initConfig) 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(&jsonFmt, "json", false, "Prints the results as JSON")
RootCmd.PersistentFlags().BoolVar(&pgSQL, "pgsql", false, "Save the results to PostgreSQL") RootCmd.PersistentFlags().BoolVar(&pgSQL, "pgsql", false, "Save the results to PostgreSQL")
RootCmd.PersistentFlags().StringVarP( RootCmd.PersistentFlags().StringVarP(
&checkList, &checkList,
"check", "check",