Go实现类telnet客户端连接获取信息

Admin 2019-04-19 16:38:14 GoLang

最近在写服务的监控,因项目比较老最早的开发人员早已不在,想获取服务的同时在线人数,通过telnet命令是可以获取,今天想用Go实现类telnet命令的获取方式。

package main

import (
    "net"
    "os"
    "fmt"
    "io"
    "strings"
    "strconv"
)

var (
    hostPost string = "127.0.0.1:1900"
)

func main()  {
    conn, err := net.Dial("tcp", hostPost)
    if err != nil {
        fmt.Printf("connent failed: %v", err)
        return
    }
    defer conn.Close()

    _, err = conn.Write([]byte("stats\r\n"))
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error: %s\n", err.Error())
        return
    }

    buf := make([]byte, 4096)
    n, err := conn.Read(buf)
    if err != nil {
       fmt.Println(err)
       return
    }
    s := string(buf[0:n])

    for _,m := range strings.Split(s,"\n") {
        if m != "" {
            line := strings.Split(m ,":")
            if line[0] == "total_connections" {
                v := strings.Replace(line[1],"\r","",-1)
                x, err := strconv.ParseFloat(v, 64)
                if err != nil {
                    fmt.Println("format err: ",err)
                }
                fmt.Println(x)
            }
        }
    }
}
相关文章
最新推荐