我正在使用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
}
答案 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())
}