mirror of
https://github.com/aquasecurity/kube-bench.git
synced 2024-12-20 05:38:13 +00:00
Add --outputfile flag for writing json results to output file (#295)
This commit is contained in:
parent
5e80f41066
commit
e64f61fa7f
@ -15,6 +15,7 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
@ -112,7 +113,7 @@ func runChecks(nodetype check.NodeType) {
|
|||||||
exitWithError(fmt.Errorf("failed to output in JSON format: %v", err))
|
exitWithError(fmt.Errorf("failed to output in JSON format: %v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(string(out))
|
PrintOutput(string(out), outputFile)
|
||||||
} else {
|
} else {
|
||||||
// if we want to store in PostgreSQL, convert to JSON and save it
|
// if we want to store in PostgreSQL, convert to JSON and save it
|
||||||
if (summary.Fail > 0 || summary.Warn > 0 || summary.Pass > 0 || summary.Info > 0) && pgSQL {
|
if (summary.Fail > 0 || summary.Warn > 0 || summary.Pass > 0 || summary.Info > 0) && pgSQL {
|
||||||
@ -251,3 +252,26 @@ func printRawOutput(output string) {
|
|||||||
fmt.Println(fmt.Sprintf("\t %s", row))
|
fmt.Println(fmt.Sprintf("\t %s", row))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func writeOutputToFile(output string, outputFile string) error {
|
||||||
|
file, err := os.Create(outputFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
w := bufio.NewWriter(file)
|
||||||
|
fmt.Fprintln(w, output)
|
||||||
|
return w.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func PrintOutput(output string, outputFile string) {
|
||||||
|
if len(outputFile) == 0 {
|
||||||
|
fmt.Println(output)
|
||||||
|
} else {
|
||||||
|
err := writeOutputToFile(output, outputFile)
|
||||||
|
if err != nil {
|
||||||
|
exitWithError(fmt.Errorf("Failed to write to output file %s: %v", outputFile, err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -47,7 +47,8 @@ var (
|
|||||||
noSummary bool
|
noSummary bool
|
||||||
noRemediations bool
|
noRemediations bool
|
||||||
filterOpts FilterOpts
|
filterOpts FilterOpts
|
||||||
includeTestOutput bool
|
includeTestOutput bool
|
||||||
|
outputFile string
|
||||||
)
|
)
|
||||||
|
|
||||||
// RootCmd represents the base command when called without any subcommands
|
// RootCmd represents the base command when called without any subcommands
|
||||||
@ -89,6 +90,7 @@ func init() {
|
|||||||
RootCmd.PersistentFlags().BoolVar(&filterOpts.Scored, "scored", true, "Run the scored CIS checks")
|
RootCmd.PersistentFlags().BoolVar(&filterOpts.Scored, "scored", true, "Run the scored CIS checks")
|
||||||
RootCmd.PersistentFlags().BoolVar(&filterOpts.Unscored, "unscored", true, "Run the unscored CIS checks")
|
RootCmd.PersistentFlags().BoolVar(&filterOpts.Unscored, "unscored", true, "Run the unscored CIS checks")
|
||||||
RootCmd.PersistentFlags().BoolVar(&includeTestOutput, "include-test-output", false, "Prints the actual result when test fails")
|
RootCmd.PersistentFlags().BoolVar(&includeTestOutput, "include-test-output", false, "Prints the actual result when test fails")
|
||||||
|
RootCmd.PersistentFlags().StringVar(&outputFile, "outputfile", "", "Writes the JSON results to output file")
|
||||||
|
|
||||||
RootCmd.PersistentFlags().StringVarP(
|
RootCmd.PersistentFlags().StringVarP(
|
||||||
&filterOpts.CheckList,
|
&filterOpts.CheckList,
|
||||||
|
Loading…
Reference in New Issue
Block a user