mirror of
https://github.com/balkian/pingish
synced 2024-11-21 02:52:29 +00:00
First commit
This commit is contained in:
commit
011f9e57ce
5
Makefile
Normal file
5
Makefile
Normal file
@ -0,0 +1,5 @@
|
||||
build:
|
||||
CGO_ENABLED=0 go build -ldflags="-s -w" -o pingish
|
||||
|
||||
run: build
|
||||
./pingish -c 10 -host www.google.es
|
14
README.md
Normal file
14
README.md
Normal file
@ -0,0 +1,14 @@
|
||||
Stupidly simple command line tool to resolve and ping hostnames.
|
||||
|
||||
I just use the binary to troubleshoot connectivity issues in scratch/alpine containers that don't have ping/dig/curl/wget.
|
||||
Just copy the binary to the container, and problem solved.
|
||||
|
||||
The binary has to be built with `CGO_ENABLED=0` to avoid problems with alpine-based images.
|
||||
|
||||
# TROUBLESHOOTING
|
||||
|
||||
To run it as a normal user in ubuntu, you might need to configure your host first: `sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"`
|
||||
|
||||
And/or set the capabilities of the binary: `sudo setcap cap_net_raw=ep pingish`
|
||||
|
||||
|
6
go.mod
Normal file
6
go.mod
Normal file
@ -0,0 +1,6 @@
|
||||
module github.com/balkian/pingish
|
||||
|
||||
require (
|
||||
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e
|
||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f // indirect
|
||||
)
|
4
go.sum
Normal file
4
go.sum
Normal file
@ -0,0 +1,4 @@
|
||||
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e h1:nt2877sKfojlHCTOBXbpWjBkuWKritFaGIfgQwbQUls=
|
||||
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e/go.mod h1:B4+Kq1u5FlULTjFSM707Q6e/cOHFv0z/6QRoxubDIQ8=
|
||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f h1:4pRM7zYwpBjCnfA1jRmhItLxYJkaEnsmuAcRtA347DA=
|
||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
45
main.go
Normal file
45
main.go
Normal file
@ -0,0 +1,45 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/tatsushid/go-fastping"
|
||||
)
|
||||
|
||||
func main() {
|
||||
name := flag.String("host", "www.google.es", "Hostname to ping")
|
||||
count := flag.Int("c", 3, "Number of times to wait for the ")
|
||||
flag.Parse()
|
||||
|
||||
adds, err := net.LookupHost(*name)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("List of addresses:")
|
||||
for _, add := range adds {
|
||||
fmt.Println("\t", add)
|
||||
}
|
||||
|
||||
p := fastping.NewPinger()
|
||||
ra, err := net.ResolveIPAddr("ip4:icmp", *name)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
p.AddIPAddr(ra)
|
||||
p.OnRecv = func(addr *net.IPAddr, rtt time.Duration) {
|
||||
fmt.Printf("IP Addr: %s receive, RTT: %v\n", addr.String(), rtt)
|
||||
}
|
||||
for i := 0; i < *count; i++ {
|
||||
err = p.Run()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
fmt.Println("finished")
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user