rusty-ping 0.1.0

A pretty ping/ICMP utility
rusty-ping-0.1.0 is not a library.

rusty-ping

A replacement for prettyping.
A very simple ping utility that tries to be as visual as possible.

Tested on Linux only.

Install

$ git clone https://source.tube/ache/rusty-ping
$ cd rusty-ping
$ cargo install --path .

You can also clone :

Usage

$ rusty-ping <host>

Or before installation :

$ cargo run -- <host>

Uninstall

$ cargo uninstall rusty-ping

⚠️ Don't forget to remove any shell integration !

Shell integration

Rusty-ping doesn't use a config file to keep things as simple as possible.
The goal, for me, is to type pp to quickly do a ping.

I will not call this project pp as it may conflict with other CLI tools. So you should set up a shell alias (e.g., pp, rp, or any name you prefer) via shell integration.

I primarily use Fish, so if anything breaks with bash or zsh, please send me an email.

Fish

I prefer to use fish abbreviations.

In $HOME/.config/fish/function/pp.fish or $HOME/.config/fish/conf.d/pp.fish :

abbr --add pp rusty-ping --stats --status --default-target 2606:4700:4700::1111

But a function works too.

function pp
    rusty-ping --stats --status --default-target 2606:4700:4700::1111
end

Bash / zsh

You can just use a function :

function pp {
    rusty-ping --stats --legend --status --default-target 2606:4700:4700::1111
}

"User Interface"

Here is the full UI and the explanations :

rusty-ping --stats --status --default-target git.ache.one --legend
0 ▁ 30 ▄ 50 ▆ 70 █ 90 ▂ 120 ▅ 150 █ 170 ▂ 190 ▄ 210 ▆ 240 ? <-- The legend (--legend)
PING git.ache.one (145.239.86.0)                            <-- The status line (--status)
▄▄▄▄▄▄▄▄?                                                   <-- The ping line
0/9 (0.0%) | ⌊34⌋ ⌈35⌉ [35] [Δ0]ms                          <-- Statistics on every packet (--stats)
0/9 (0.0%) | ⌊34⌋ ⌈35⌉ [35] [Δ0]ms                          <-- Statistics on the last 30 packets (--stats)

The legend indicates which characters correspond to which RTT in the ping line.
On the ping line, each character represents an ICMP packet sent.

? => Packet not yet received ! => Packet lost

The statistics

RTT is expressed in miliseconds.

 ┏━> Number of packets lost / Total sent (Percentage of packets lost)
 │         ┏━> Just a separator
0/9 (0.0%) | ⌊36⌋ ⌈56⌉ [40] [Δ4]ms
              │    │    │    ┕━> The mean absolute difference
              │    │    │        to the average RTT
              │    │    ┕━> The average RTT
              │    ┕━> The maximum RTT
              ┕━> The minimum RTT

Technical Notes

Rusty-ping does NOT use the ping command.
It isn't tied to Bash or any specific shell.

Rust dependencies:

  • clap to parse args.
  • ping crate to actually do the ping.
  • term_size to print the legend on a single line.
  • tokio for mpsc, the default mpsc queue seems to be deprecated;

License

CeCILL 2.1