status/services/check_ping.go
2025-02-16 12:07:57 +01:00

31 lines
496 B
Go

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()
if _, ok := err.(*exec.ExitError); ok {
return StatusDown
}
if err != nil {
return StatusUnknown
}
return StatusUp
}
return check, nil
}