status/services/check_ping.go
2025-02-16 11:52:55 +01:00

33 lines
510 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 err != nil {
return StatusUnknown
}
code := cmd.ProcessState.ExitCode()
if code != 0 {
return StatusDown
}
return StatusUp
}
return check, nil
}