From fb558adab5ce1cd7c7ec3d12f99d51bd404efb42 Mon Sep 17 00:00:00 2001 From: Jean-Louis Huynen Date: Tue, 31 Mar 2020 10:56:11 +0200 Subject: [PATCH] add: [sshd] csv export --- logcompiler/sshd.go | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/logcompiler/sshd.go b/logcompiler/sshd.go index 10781bd..be5a011 100644 --- a/logcompiler/sshd.go +++ b/logcompiler/sshd.go @@ -255,6 +255,10 @@ func (s *SSHDCompiler) compile() error { if err != nil { return err } + err = csvStats(s, v) + if err != nil { + return err + } } // List months for which we need to update statistics @@ -460,6 +464,57 @@ func (s *SSHDCompiler) compile() error { return nil } +func csvStats(s *SSHDCompiler, v string) error { + r := *s.r0 + zrank, err := redis.Strings(r.Do("ZRANGEBYSCORE", v, "-inf", "+inf", "WITHSCORES")) + if err != nil { + return err + } + + stype := strings.Split(v, ":") + + // Create folder to store data + if _, err := os.Stat("data"); os.IsNotExist(err) { + err := os.Mkdir("data", 0700) + if err != nil { + return err + } + } + + if _, err := os.Stat(filepath.Join("data", "sshd")); os.IsNotExist(err) { + err := os.Mkdir(filepath.Join("data", "sshd"), 0700) + if err != nil { + return err + } + } + + if _, err := os.Stat(filepath.Join("data", "sshd", stype[0])); os.IsNotExist(err) { + err := os.Mkdir(filepath.Join("data", "sshd", stype[0]), 0700) + if err != nil { + return err + } + } + + var file *os.File + if file, err = os.Create(filepath.Join("data", "sshd", stype[0], fmt.Sprintf("%v.csv", v))); err != nil { + return err + } + + defer file.Close() + + for k, v := range zrank { + // pair: keys + if (k % 2) == 0 { + fmt.Fprintf(file, "%s, ", v) + // even: values + } else { + fmt.Fprintln(file, v) + } + } + + return nil +} + func plotStats(s *SSHDCompiler, v string) error { r := *s.r0 zrank, err := redis.Strings(r.Do("ZRANGEBYSCORE", v, "-inf", "+inf", "WITHSCORES"))