I started working on a ping plotter a while ago and back then I still was on linux and was currently getting into C. Now that I’m not on linux anymore I kinda dropped the project for a while. After that pause I’ve finally gone back I decided to ditch C and write it in Python since I’m developing it on windows but want it to work on linux aswell. The ping plotter is supposed to ping an ip over a timespan and then make a graph out of the latency values. For that I’ll use the ping command since that’s the easiest way to get latency values without adiministrative rights. The issue is that the windows ping.exe and the linux ping command return different outputs so formatting them means I have to differenciate between windows and linux.
After some searching I came across fping which is a custom ping program for linux. It’s designed to be used in scripts which digest it’s output. So now the only issue is to compile that for windows. I used cygwin for it since nobody seems to have done it before me. Sadly the build script returns errors when compiling. So here’s how I fixed that:
First get the sourcode from the releases. Now we’ll need to convince cygwin that we have the right headers. Download this header file (made by John Paul Morrison) as icmp.h. Copy it into these folders and replace it with the icmp.h that is in those folders (That one is empty, you can open it if you want):
The path to cygwin will usually be C:\cygwin64\ or C:\cygwin\. Now you can run
$ ./configure $ make
Now you’ll have a fping.exe in the ./src/ folder. Run a command prompt as admin and then run something like
C:\fping\src>fping.exe -s google.com
That should give someting like this
google.com is alive 1 targets 1 alive 0 unreachable 0 unknown addresses 0 timeouts (waiting for response) 1 ICMP Echos sent 1 ICMP Echo Replies received 0 other ICMP received 36.6 ms (min round trip time) 36.6 ms (avg round trip time) 36.6 ms (max round trip time) 0.038 sec (elapsed real time)
Pretty cool, huh? But if you read carefully it needs adminstrative rights on windows and root rights on linux so all of that was kinda wasted… I’ll just use the output of the native ping commands instead but if anyone needs fping on windows here you go. For those who are too lazy to compile it themselves you can download my compiled binary for windows here (By the way there seems to be an infected version of fping on the web so if you need some confidence, that this one isn’t a virus heres a virustotal scan or scan it yourself). It’s completely unmodified and all credits go to the original authors.
I’ll now go back to getting back into python and formatting ping command outputs. Wohoo.