status/services/check_ping.go

32 lines
496 B
Go
Raw Normal View History

2025-02-16 10:52:55 +00:00
package services
import (
"encoding/json"
"os/exec"
)
func Ping(msg json.RawMessage) (Check, error) {
var config struct {
Address string `json:"address"`
}
err := json.Unmarshal(msg, &config)
if err != nil {
return nil, err
}
check := func() Status {
cmd := exec.Command("ping", "-c 4", config.Address)
err := cmd.Run()
2025-02-16 11:07:57 +00:00
if _, ok := err.(*exec.ExitError); ok {
return StatusDown
}
2025-02-16 10:52:55 +00:00
if err != nil {
return StatusUnknown
}
return StatusUp
}
return check, nil
}