Documentation
¶
Overview ¶
Package arping is a native go library to ping a host per arp datagram, or query a host mac address
The currently supported platforms are: Linux and BSD.
The library requires raw socket access. So it must run as root, or with appropriate capabilities under linux: `sudo setcap cap_net_raw+ep <BIN>`.
Examples:
ping a host:
------------
package main
import ("fmt"; "github.com/j-keck/arping"; "net")
func main(){
dstIP := net.ParseIP("192.168.1.1")
if hwAddr, duration, err := arping.Ping(dstIP); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s (%s) %d usec\n", dstIP, hwAddr, duration/1000)
}
}
resolve mac address:
--------------------
package main
import ("fmt"; "github.com/j-keck/arping"; "net")
func main(){
dstIP := net.ParseIP("192.168.1.1")
if hwAddr, _, err := arping.Ping(dstIP); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s is at %s\n", dstIP, hwAddr)
}
}
check if host is online:
------------------------
package main
import ("fmt"; "github.com/j-keck/arping"; "net")
func main(){
dstIP := net.ParseIP("192.168.1.1")
_, _, err := arping.Ping(dstIP)
if err == arping.ErrTimeout {
fmt.Println("offline")
}else if err != nil {
fmt.Println(err.Error())
}else{
fmt.Println("online")
}
}
Index ¶
- Variables
- func EnableVerboseLog()
- func Ping(dstIP net.IP) (net.HardwareAddr, time.Duration, error)
- func PingOverIface(dstIP net.IP, iface net.Interface) (net.HardwareAddr, time.Duration, error)
- func PingOverIfaceByName(dstIP net.IP, ifaceName string) (net.HardwareAddr, time.Duration, error)
- func SetTimeout(t time.Duration)
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrTimeout error ErrTimeout = errors.New("timeout") )
Functions ¶
func PingOverIface ¶
PingOverIface sends an arp ping over interface 'iface' to 'dstIP'
func PingOverIfaceByName ¶
PingOverIfaceByName sends an arp ping over interface name 'ifaceName' to 'dstIP'
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.