summaryrefslogtreecommitdiff
path: root/ping.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2018-04-17 16:21:34 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2018-04-17 16:21:34 -0400
commit6cdcdc77871f9c08be4f4f50d52cb178c429d203 (patch)
treeec0a1c15da5b885addb6e114663430ee7f8614da /ping.go
parentd18e052e01ec6fa6df4165a409058fb81adf0555 (diff)
add ping
Diffstat (limited to 'ping.go')
-rw-r--r--ping.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/ping.go b/ping.go
new file mode 100644
index 0000000..a41b4ab
--- /dev/null
+++ b/ping.go
@@ -0,0 +1,30 @@
+package main
+
+import (
+ "net"
+ "os/exec"
+ "strconv"
+ "strings"
+)
+
+func Ping(ip net.IP) float64 {
+ cmd := exec.Command("ping",
+ "-n", // numeric
+ "-q", // quiet
+ "-c", "1",
+ ip.String())
+ _output, _ := cmd.CombinedOutput()
+ output := string(_output)
+ for _, line := range strings.Split(output, "\n") {
+ if !strings.HasPrefix(line, "rtt min/avg/max/mdev = ") {
+ continue
+ }
+ values := strings.TrimPrefix(line, "rtt min/avg/max/mdev = ")
+ value, err := strconv.ParseFloat(strings.Split(values, "/")[0], 64)
+ if err != nil {
+ continue
+ }
+ return value
+ }
+ return -1
+}