如何使用golang ping远程mysql

时间:2016-12-09 05:43:37

标签: mysql linux go

我正在使用golang ping一些linux机器。 但它并不准确,因为它总是需要差不多10秒来连接远程mysql。

我使用这个命令:

  

mysql -u USER -p PASSWORD -h REMOTE_IP

所以我想知道如何使用linux命令来知道它是否打开。

然后我将使用golang' exec.Command来做到这一点。

这是我的ping代码:

package main

import (
    "errors"
    "fmt"
    "github.com/tatsushid/go-fastping"
    "net"
    "net/smtp"
    "strings"
    "time"
)

func main(){
    err := ping("192.168.2.1")
    if err != nil{
        fmt.Println("WARNING!!!!!!")
    }
}
func ping(ip string) error {
    p := fastping.NewPinger()
    ra, err := net.ResolveIPAddr("ip", ip)
    if err != nil {
        return err
    }
    p.AddIPAddr(ra)
    found := false
    p.OnRecv = func(addr *net.IPAddr, rtt time.Duration) {
        found = true
    }
    err = p.Run()
    if err != nil {
        return err
    }
    if !found {
        return errors.New("response error")
    }
    return nil
}

2 个答案:

答案 0 :(得分:3)

我假设你想知道mysql是否可以访问。您可以使用以下示例:

"**/*.js": {"when": "$(basename).ts"},
"**/*.js.map": {"when": "$(basename).ts"}

答案 1 :(得分:2)

如果您只需要检查与特定主机的连接& port,你可以这样做:

package main

import (
    "fmt"
    "net"
)

const (
    host = "192.168.2.1"
    port = "3306" // default MySQL port
)

func main() {

    conn, err := net.Dial("tcp", host+":"+port)
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    fmt.Printf("Connected to %s \n", conn.RemoteAddr().String())
}