add: [sshd] csv export
parent
7441d92eb5
commit
fb558adab5
|
@ -255,6 +255,10 @@ func (s *SSHDCompiler) compile() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
err = csvStats(s, v)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// List months for which we need to update statistics
|
// List months for which we need to update statistics
|
||||||
|
@ -460,6 +464,57 @@ func (s *SSHDCompiler) compile() error {
|
||||||
return nil
|
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 {
|
func plotStats(s *SSHDCompiler, v string) error {
|
||||||
r := *s.r0
|
r := *s.r0
|
||||||
zrank, err := redis.Strings(r.Do("ZRANGEBYSCORE", v, "-inf", "+inf", "WITHSCORES"))
|
zrank, err := redis.Strings(r.Do("ZRANGEBYSCORE", v, "-inf", "+inf", "WITHSCORES"))
|
||||||
|
|
Loading…
Reference in New Issue