status/services/check_ping.go

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