defmodule Speedtest.Ping do
@moduledoc """
Elixir wrapper for the ping command.
"""
@doc """
Ping Command.
Ping an IP and return a tuple with the time
`{:ok, ip, time}`
"""
def ping(ip) do
try do
{cmd_output, _} = System.cmd("ping", ["-c", "5", "-w", "5", "-s", "1", ip])
[_ | time] = Regex.run(~r/time(.*?ms)/, cmd_output)
[time] = time
time = String.split(time, "m")
time = List.first(time)
time = String.trim(time)
time = String.to_integer(time)
{:ok, ip, time}
rescue
e -> {:error, ip, e}
end
end
end