gpt4 book ai didi

mysql - 如何使用golang ping远程mysql

转载 作者:IT王子 更新时间:2023-10-29 02:27:37 26 4
gpt4 key购买 nike

我正在使用 go 来 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
}

最佳答案

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

package main

import (
"database/sql"
"flag"
"fmt"
"log"

_ "github.com/go-sql-driver/mysql"
)

func main() {
var (
server = flag.String("mysql", "localhost:3306", "mysql server")
user = flag.String("user", "root", "mysql user")
pass = flag.String("password", "", "mysql password")
)
flag.Parse()

db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/", *user, *pass, *server))
if err != nil {
log.Fatalln(err)

}
defer db.Close()

err = db.Ping()

if err != nil {
log.Fatalln(err)

} else {
log.Println("mysqld is alive")

}

}

关于mysql - 如何使用golang ping远程mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41053830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com