added main.go
This commit is contained in:
parent
dcf7b24db8
commit
3be5b12690
|
@ -0,0 +1,74 @@
|
|||
// vi:ts=4:sts=4:sw=4:noet:tw=72
|
||||
//
|
||||
// logforward
|
||||
//
|
||||
// Copyright (c) 2018 Andreas Neue <an@dnix.de>
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"compress/gzip"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"git.dnix.de/an/xlog"
|
||||
goscp "github.com/bramvdbogaerde/go-scp"
|
||||
"github.com/bramvdbogaerde/go-scp/auth"
|
||||
"golang.org/x/crypto/ssh"
|
||||
)
|
||||
|
||||
var (
|
||||
bufferLimit = flag.Int("b", 1024*1024*1024, "Buffer size limit")
|
||||
scpUser = flag.String("u", "", "User")
|
||||
scpHost = flag.String("h", "localhost:22", "Host:Port")
|
||||
scpKey = flag.String("k", "", "Key")
|
||||
filePrefix = flag.String("p", "log-", "Filename prefix")
|
||||
)
|
||||
|
||||
func init() {
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func main() {
|
||||
log := ""
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
for {
|
||||
time.Sleep(1 * time.Microsecond)
|
||||
line, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
xlog.Error(err.Error())
|
||||
} else {
|
||||
log += line
|
||||
fmt.Printf("%d\r", len(log))
|
||||
if len(log) >= *bufferLimit {
|
||||
l := []byte(log)
|
||||
go gzipAndSend(l)
|
||||
log = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func gzipAndSend(l []byte) {
|
||||
var b bytes.Buffer
|
||||
fmt.Printf("\nSending buffer ...\n")
|
||||
w := gzip.NewWriter(&b)
|
||||
w.Write(l)
|
||||
w.Close()
|
||||
r := bufio.NewReader(&b)
|
||||
clientConfig, _ := auth.PrivateKey(*scpUser, *scpKey, ssh.InsecureIgnoreHostKey())
|
||||
client := goscp.NewClient(*scpHost, &clientConfig)
|
||||
err := client.Connect()
|
||||
if err != nil {
|
||||
fmt.Printf(err.Error() + "\n")
|
||||
return
|
||||
}
|
||||
t := time.Now()
|
||||
date := t.Format("20060102150405")
|
||||
client.CopyFile(r, *filePrefix+date+".gz", "0644")
|
||||
fmt.Printf("Buffer sent\n")
|
||||
}
|
Loading…
Reference in New Issue