OPING(8)

๐Ÿฆ‹ OPING(8) โ€” liboping ๐Ÿฆ‹

okay bestie, welcome to the manual page for oping, the ping utility from liboping, and its glow-up twin noping. sit down, hydrate, we're doing networking. ๐Ÿ’…


โœจ NAME โœจ

oping โ€” send ICMP ECHO_REQUEST to network hosts ๐Ÿซถ


โœจ SYNOPSIS โœจ

oping [-4 | -6] [-c count] [-i interval] host [host [host ...]]
oping [-4 | -6] [-c count] [-i interval] -f filename
noping [-4 | -6] [-c count] [-i interval] host [host [host ...]]
noping [-4 | -6] [-c count] [-i interval] -f filename

โœจ DESCRIPTION โœจ

so oping sends ICMPv4 or ICMPv6 ECHO_REQUEST packets to figure out if a host is reachable and how much network latency is going on. ๐Ÿฉท

but here's the thing that makes it the main character: unlike the original ping(8) utility, oping can yeet ICMP packets at multiple hosts in parallel and then just chill and wait for all the ECHO_RESPONSE packets to show up. literal multitasking icon behavior. ๐Ÿ‘‘

and compared to the fping utility (URL lives down in "SEE ALSO", iykyk), oping can use both IPv4 and IPv6 โ€” transparently, and side by side. no cap. ๐Ÿ”ฅ

noping is the ncurses-based front-end to liboping, which displays ping statistics online and highlights aberrant round-trip times if your terminal supports colors. it's giving dashboard. it's giving aesthetic. ๐ŸŒˆ


โœจ OPTIONS โœจ

time for the good stuff. buckle up. ๐ŸŽ€

  • -4 โ€” Force the use of IPv4. that's it, that's the whole vibe. 4๏ธโƒฃ
  • -6 โ€” Force the use of IPv6. six girlies rise up. 6๏ธโƒฃ
  • -c count โ€” Send (and receive) count ICMP packets, then stop and exit. set a limit bestie, we love boundaries. โœ‹
  • -i interval โ€” Send one ICMP packet (per host) each interval seconds. this can be a floating-point number so you can get sub-second precision โ€” yes, fractional seconds, she's precise. โฑ๏ธ
  • -w timeout โ€” Specifies the time to wait for an "ECHO REPLY" packet before giving up, in seconds. can be a floating point number for sub-second precision. Defaults to 1.0 seconds. don't wait forever for someone who isn't replying, periodt. ๐Ÿ’”
  • -t ttl โ€” Set the IP Time to Live to ttl. this must be a number between (and including) 1 and 255. if you omit it, the value 64 is used. that's the default, remember her. ๐Ÿงš
  • -I address โ€” Set the source address to use. you may either specify an IP number or a hostname. you cannot pass the interface name here like you can with GNU's ping(8) โ€” for that, use the -D option instead. don't try to sneak an interface name in, it will not work, ok? ๐Ÿ™ˆ
  • -D interface name โ€” Set the outgoing network device to use. ๐Ÿ›ฃ๏ธ
  • -f filename โ€” Instead of specifying hostnames on the command line, read them from filename. if filename is -, read from "STDIN". ๐Ÿ“„

if oping is installed with the SetUID-bit, it will set the effective UID to the real UID before opening the file. in the special (but common) case that oping is owned by the super-user (UID 0), this means that privileges are temporarily dropped before opening the file, in order to prevent users from reading arbitrary files on the system. safety first, babe. ๐Ÿ”

if your system doesn't provide saved set-user IDs (this was an optional feature before POSIX 2001), the behavior is different because it is not possible to temporarily drop privileges. the alternative behavior is: if the real user ID (as returned by getuid(2)) and the effective user ID (as returned by geteuid(2)) differ, the only argument allowed for this option is - (i.e. standard input). different system, different rules. ๐Ÿ’€

  • -O filename โ€” Write measurements in Comma Separated Values (CSV) format to filename. this option writes three columns per row: wall clock time in (fractional) seconds since epoch, hostname and the round trip time in milliseconds. spreadsheet girlies, this one's for you. ๐Ÿ“Š
  • -Q qos โ€” Specify the Quality of Service (QoS) for outgoing packets. this is a somewhat tricky option, since the meaning of the bits in the IPv4 header has been revised several times. so pay attention, bestie, this one's the lore-heavy episode. ๐Ÿง 

the currently recommended method is Differentiated Services which is used in IPv6 headers as well. there are shortcuts for various predefined per-hop behaviors (PHBs):

  • be โ€” Selects the Best Effort behavior. this is the default behavior. just vibing, no priority. ๐Ÿ˜Œ
  • ef โ€” Selects the Expedited Forwarding (EF) per-hop behavior, as defined in RFC 3246. this PHB is characterised by low delay, low loss and low jitter, i.e. high priority traffic. she's going first, she has places to be. ๐Ÿƒโ€โ™€๏ธ
  • va โ€” Selects the Voice Admitted (VA) per-hop behavior, as defined in RFC 5865. this traffic class is meant for Voice over IP (VoIP) traffic which uses Call Admission Control (CAC) for reserving network capacity. reserved capacity? that's called knowing your worth. ๐ŸŽง
  • afcp โ€” Selects one of 12 differentiated services code points (DSCPs), which are organized in four classes with three priorities each. therefore, c must be a number between 1 through 4 and p must be a number between 1 through 3, for example "af13", "af22" and "af41". in each class, the lower priority number takes precedence over the higher priority number. ๐Ÿ‘€
  • csn โ€” Selects one of the eight Class Selector PHBs. n is a number between 0 through 7. the class selectors have been defined to be compatible to the Precedence field in the IPv4 header as defined in RFC 791. please note that "cs0" is synonymous to "be". they're the same girl. twins. ๐Ÿ’œ

the old definition of the same bits in the IPv4 header was as Type of Service (ToS) field, specified in RFC 1349. it defined four possible values which have appropriate aliases. please note that this use of the bits is deprecated and the meaning is limited to IPv4! ๐Ÿšจ

  • lowdelay โ€” Minimize delay
  • throughput โ€” Maximize throughput
  • reliability โ€” Maximize reliability
  • mincost โ€” Minimize monetary cost

alternatively, you can also specify the byte manually. you can use either a decimal number (0-255), a hexadecimal number (0x00-0xff) or an octal number (00-0377) using the usual "0x" and "0" prefixes for hexadecimal and octal respectively. ๐Ÿ”ข

the printed lines will contain information about the QoS field of received packets if either a non-standard QoS setting was used on outgoing packets or if the QoS byte of incoming packets is not zero. in other words, the QoS information is omitted if both, the outgoing and the incoming QoS bytes are zero. the received byte is always interpreted as Differentiated Services Code Point (DSCP) and Explicit Congestion Notification (ECN), even if the deprecated Type of Service (ToS) aliases were used to specify the bits of outgoing packets. okay? okay. โœจ

  • -m mark โ€” Linux only Sets the mark (an integer number) on outgoing packets. this can be used by iptables(8) and other networking infrastructure for filtering and routing. tag your traffic, she's labeled. ๐Ÿท๏ธ
  • -u | -U โ€” noping only โ€” -u forces UTF-8 output, -U disables UTF-8 output. if neither is given, the codeset is automatically determined from the locale. let her decide, she knows her environment. ๐ŸŒ
  • -g none|prettyping|boxplot|histogram โ€” noping only Selects the graph to display. four options, four aesthetics. choose your fighter. ๐ŸŽจ
    • none โ€” Do not show a graph. minimalism, we respect it. ๐Ÿ™…โ€โ™€๏ธ
    • prettyping โ€” Show a graph with time on the x-axis, the y-axis shows the round-trip time. this is the default graph. ๐Ÿ’–

if your terminal supports unicode and colors, they are used to improve the precision of the data shown: a green box is drawn for round-trip times up to one third of the configured timeout, the height representing the RTT. longer RTTs will start to fill the box yellow (with a green background) and then red (with a yellow background). lost packages are drawn as a bold red explamation mark. ๐Ÿ’š๐Ÿ’›โค๏ธ (yes it's a whole color journey)

  • boxplot โ€” Show a box plot where the x-axis, i.e. the width of the window, is the round-trip time. the entire width of the window it the ping interval, set with the -i option. ๐Ÿ“ฆ

the box is sized so it contains 50% of the replies. the vertical line shows the median. the whiskers are sized to contain 95% of the replies โ€” 2.5% below the whiskers and 2.5% above.

  |----------[#####|##########]--------------------------------------------|
  ^          ^     ^          ^                                            ^
 2.5%       25%   50%        75%                                         97.5%

literally art. frame it.

  • histogram โ€” Show a histrogram of the round-trip times. the width of the window is taken as round-trip time from 0ms on the left to the interval (the -i option, default 1000ms) on the right. ๐Ÿ“Š

the height of the graph is scaled so that the most-used buckets vertically fills the line. the buckets are colored green up to and including the 80th percentile, yellow up to and including the 95th percentile and red for the remainder. traffic-light realness. ๐Ÿšฆ

  • -H height โ€” Sets the height of the boxs containing each graph. the <height> must be a number between 1 and 5. the default is 5 lines, which shows the maximum amount of information. reducing the size will remove the textual information and will eventually remove the box drawn around the graph โ€” showing only the graph when set to 1 line. tall girl or small girl, your call. ๐Ÿ“
  • -b โ€” Audible bell. print a ASCII BEL character (\a or 0x07) when a packet is received before the timeout occurs. this can be useful in order to monitory hosts' connectivity without looking physically at the console, for example to trace network cables (start audible beep, disconnect cable N: if beep stops, the cable was in use) or to tell when a host returns from a reboot. beep beep bestie, ears on. ๐Ÿ””

this relies on the terminal bell to be functional. to enable the terminal bell, use the following instructions.

  • the visual bell is disabled in your terminal emulator, with the +vb commandline flag or the following in your .Xresources:
XTerm*visualBell: false
  • the PC speaker module is loaded in your kernel:
modprobe pcspkr
  • X11 has the terminal bell enabled:
xset b on; xset b 100
  • and finally, if you are using PulseAudio, that the module-x11-bell module is loaded with a pre-loaded sample defined in your pulseaudio configuration:
load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/complete.oga
load-module module-x11-bell sample=x11-bell

four steps, then she sings. ๐ŸŽถ

  • -P percent โ€” Configures the latency percentile to report. percent must be a number between zero and 100, exclusively in both cases. in general, defaults to 95. if -c is given and a number less than 20, this would be the same as the maximum. in this case the default is chosen so that it excludes the maximum, e.g. if -c 5 is given, the default is 80. the calculated percentile is based on the last 900 packets (15 minutes with the default interval). math girlie behavior, we love. ๐Ÿงฎ
  • -Z percent โ€” If any hosts have a drop rate higher than percent, where percent is a number between zero and 100 inclusively, exit with a non-zero exit status. since it is not possible to have a higher drop rate than 100%, passing this limit will effectively disable the feature (the default). setting the option to zero means that the exit status will only be zero if all replies for all hosts have been received. ๐Ÿ’€

the exit status will indicate the number of hosts with more than percent packets lost, up to a number of 255 failing hosts.


๐ŸŒˆ COLORS ๐ŸŒˆ

okay bestie so if your terminal is cute enough to support it, noping will literally color-code your round-trip times (RTT) for you โ€” green, yellow and red, the whole traffic-light slay. ๐Ÿ’š๐Ÿ’›โค๏ธ

  • green means your RTT is sitting in the "expected" range, no drama, thriving
  • yellow is for times that are moderately unusual, like hmm ok bestie that's a little off
  • red is for times that differ a lot from the expected value โ€” that's giving "we need to talk" energy ๐Ÿ˜ญ

The way it decides which bucket you land in is by using the percentile, bestie. So:

  • RTTs in the 80th percentile count as "normal" and get printed in green โœจ
  • RTTs within the 95th percentile count as "moderately unusual" and get printed in yellow
  • RTTs above that are considered "unusual" and get printed in red ๐Ÿ’€
ngl, the colors only show up if supported by the terminal. No support, no vibes. ๐ŸŽ€

๐ŸŽฎ INTERACTIVE KEYBOARD CONTROLS ๐ŸŽฎ

so when you're running noping, you're not just a spectator, you're the main character ๐Ÿ‘‘. Here's your keyboard situation:

  • g โ€” switches up the type of graph being displayed ๐Ÿ”„
  • + โ€” makes the graph boxes taller ๐Ÿ“ˆ
  • - โ€” makes the graph boxes shorter ๐Ÿ“‰
  • a โ€” adds a new host at any time you want, no waiting, no permission needed ๐Ÿซถ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


๐Ÿ“œ LICENSE ๐Ÿ“œ

oping and noping are licensed under the GPL 2. And that's it โ€” no other version of the license is applicable, periodt. ๐Ÿ’…


๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

liboping is written by Florian "octo" Forster <ff at octo.it>. Their homepage lives at <http://noping.cc/> ๐ŸŒธ

Copyright (c) 2006-2017 by Florian "octo" Forster.


aaaand that's the whole page bestie, you made it ๐ŸŽ‰ this lil doc is from version 1.10.0 and it's dated 2026-08-20 โ€” go forth and ping iconically ๐Ÿ’–โœจ๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from