标签:case string fmt Println tail 使用 go data
git 仓库:https://github.com/hpcloud/tail.git
package main import ( "fmt" "github.com/hpcloud/tail" "strings" ) type InfoData struct { InIntf string OutIntf string SrcAddr string DstAddr string Protocol string SrcPort string DstPort string DateTime string } func main() { t, err := tail.TailFile("/var/log/iptables.log", tail.Config{ Location: &tail.SeekInfo{0, 2}, Follow: true, MustExist: true, Logger: tail.DiscardingLogger, }) if err != nil { fmt.Println(err.Error()) return } defer t.Stop() for line := range t.Lines { data := InfoData{ DateTime: line.Time.Format("2006-01-02 15:04:05"), } fmt.Println(line) fmt.Println(line.Time) fmt.Println(line.Text) n1 := strings.Split(line.Text, "iptables:") fmt.Println(n1) n2 := strings.Fields(n1[1]) for n := range n2 { s := strings.Split(n2[n], "=") switch s[0] { case "IN": data.InIntf = s[1] case "OUT": data.OutIntf = s[1] case "SRC": data.SrcAddr = s[1] case "DST": data.DstAddr = s[1] case "SPT": data.SrcPort = s[1] case "DPT": data.DstPort = s[1] case "PROTO": data.Protocol = s[1] } } fmt.Println(data) } }
标签:case,string,fmt,Println,tail,使用,go,data 来源: https://www.cnblogs.com/wangjq19920210/p/15185606.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。