wecisecode vor 5 Tagen
Ursprung
Commit
e0b1f0441f
2 geänderte Dateien mit 132 neuen und 32 gelöschten Zeilen
  1. 15 32
      .gitignore
  2. 117 0
      syslog/syslog.go

+ 15 - 32
.gitignore

@@ -1,40 +1,23 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
+*
+!*.*
+!*/
+.*
+.*/
+*.code-workspace
 
 # Folders
+~*
 _obj
 _test
-.idea
-.vscode
-.github
-data
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-test/*
-!test/*.*
-!test/*/
-
-test/*/*
-!test/*/*.*
-!test/*/*/
+data/
+bak/
 
+*.log
+*.bak
 *.exe
-*.test
-*.prof
-*.iml
 *.class
 *.tmp
-*.zip
+*.a
+*.o
+*.so
+*.zip

+ 117 - 0
syslog/syslog.go

@@ -0,0 +1,117 @@
+//go:build !windows && !plan9
+
+package main
+
+import (
+	"bufio"
+	"flag"
+	"fmt"
+	"log"
+	"log/syslog"
+	"os"
+	"strings"
+	"time"
+)
+
+func main() {
+	var ip = flag.String("ip", "localhost:514", "ip:port")
+	var cycle = flag.Int("cycle", 1000, "repeat number")
+	var cycleSpan = flag.Int("sleep", 1, "sleep millisecond after one cycle")
+	var span = flag.Int("span", 1, "sleep 1 millisecond every span row")
+	var protocol = flag.String("protocol", "udp", "udp/tcp")
+	var incTime = flag.Int("inctime", 1, "Increase seconds")
+	var file = flag.String("file", "", "filenamesave for save")
+
+	flag.Parse()
+
+	var writer *bufio.Writer
+
+	if *file != "" {
+		// 创建输出文件
+		outputFile, err := os.Create(*file)
+		if err != nil {
+			log.Fatal("无法创建输出文件:", err)
+		}
+		defer outputFile.Close()
+
+		writer = bufio.NewWriter(outputFile)
+		defer writer.Flush() // 确保所有缓冲数据写入磁盘
+	}
+
+	filePath := os.Args[len(os.Args)-1]
+	readFile, err := os.Open(filePath)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	fileScanner := bufio.NewScanner(readFile)
+	fileScanner.Split(bufio.ScanLines)
+	var fileLines []string
+	for fileScanner.Scan() {
+		fileLines = append(fileLines, fileScanner.Text())
+	}
+	_ = readFile.Close()
+
+	/*for _, line := range fileLines {
+	      fmt.Println(line)
+	  }
+
+	  fmt.Println(fileLines)
+	*/
+
+	sysLog, err := syslog.Dial(*protocol, *ip, syslog.LOG_WARNING|syslog.LOG_DAEMON, "demo")
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	// 11-Jul-2023 16:00:01 DNS systemd: Started Session 1370 of user root.
+	format := "02-Jan-2006 15:04:05"
+	total := 0
+	loop := 0
+	for i := 0; i < *cycle; i++ {
+		incDuration := time.Second * time.Duration(i*(*incTime))
+		for k, line := range fileLines {
+			if *incTime != 0 && line != "" {
+				fields := strings.Fields(line)
+				if len(fields) > 2 {
+					timeStr := fields[0] + " " + fields[1]
+					line = strings.Join(fields[2:], " ")
+					t, err := time.Parse(format, timeStr)
+					if err != nil {
+						log.Fatal(err)
+					}
+					t = t.Add(incDuration)
+					line = t.Format(format) + " " + line
+				}
+			}
+
+			if *file == "" {
+				if err = sysLog.Emerg(line); err != nil {
+					log.Fatal(err)
+				}
+			} else {
+				// 将行内容写入输出文件(包括换行符)
+				_, err := writer.WriteString(line + "\n")
+				if err != nil {
+					log.Fatal("写入文件失败:", err)
+				}
+
+				// 每处理100行刷新一次缓冲区(可选)
+				if total%10 == 0 {
+					writer.Flush()
+				}
+
+			}
+
+			if *span > 0 && (k%*span == 0) {
+				time.Sleep(time.Duration(*span) * time.Millisecond)
+			}
+			total++
+		}
+		loop++
+		fmt.Printf("send %d , total %d row .\n", loop, total)
+		if *cycleSpan > 0 {
+			time.Sleep(time.Duration(*cycleSpan) * time.Millisecond)
+		}
+	}
+}