eping 4.51__tar.gz → 4.76__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {eping-4.51 → eping-4.76}/PKG-INFO +39 -32
- {eping-4.51 → eping-4.76}/README.md +38 -31
- {eping-4.51 → eping-4.76}/pyproject.toml +1 -1
- {eping-4.51 → eping-4.76}/src/eping/eping.py +657 -485
- {eping-4.51 → eping-4.76}/src/eping/epinga.py +47 -12
- {eping-4.51 → eping-4.76}/src/eping.egg-info/PKG-INFO +39 -32
- {eping-4.51 → eping-4.76}/LICENSE +0 -0
- {eping-4.51 → eping-4.76}/setup.cfg +0 -0
- {eping-4.51 → eping-4.76}/src/eping/__init__.py +0 -0
- {eping-4.51 → eping-4.76}/src/eping/_launch_eping.py +0 -0
- {eping-4.51 → eping-4.76}/src/eping.egg-info/SOURCES.txt +0 -0
- {eping-4.51 → eping-4.76}/src/eping.egg-info/dependency_links.txt +0 -0
- {eping-4.51 → eping-4.76}/src/eping.egg-info/entry_points.txt +0 -0
- {eping-4.51 → eping-4.76}/src/eping.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eping
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.76
|
|
4
4
|
Summary: Continuous ICMP reachability monitor built on fping, with a CSV logfile analyser (epinga)
|
|
5
5
|
Author-email: Ewald Jeitler <ewald@jeitler.cc>
|
|
6
6
|
License: GPL-3.0-or-later
|
|
@@ -17,13 +17,25 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Dynamic: license-file
|
|
19
19
|
|
|
20
|
-
# eping.py 4.
|
|
20
|
+
# eping.py 4.76
|
|
21
21
|
|
|
22
22
|
Continuous ICMP reachability monitor built on `fping`. Scans a host list in a loop,
|
|
23
23
|
reports each host UP/DOWN/NO-DNS, counts state changes. CLI (curses) or web GUI.
|
|
24
24
|
|
|
25
25
|
Written by Ewald Jeitler — <https://www.jeitler.cc>
|
|
26
26
|
|
|
27
|
+
## Screenshots
|
|
28
|
+
|
|
29
|
+
Web GUI (`-web`) - 61 demo hosts, mouse-over shows the host details and its state history:
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
Terminal (curses) mode:
|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
|
|
27
39
|
## Requirements
|
|
28
40
|
|
|
29
41
|
- Python 3.6+ (eping.py and epinga.py)
|
|
@@ -246,13 +258,13 @@ Single self-contained page, no external resources.
|
|
|
246
258
|
- Toolbar, two rows (wraps if narrow):
|
|
247
259
|
- Row 1: view select (9 views), sort order select, SET REFERENCE, ZERO CHANGES,
|
|
248
260
|
CLEAR ALL, address mode select, GET NAMES, ADV OPTIONS, LOGGING, FILE OPERATIONS
|
|
249
|
-
select,
|
|
261
|
+
select, STOP, font size.
|
|
250
262
|
- Row 2: match filter (SET/CLEAR), ADV FILTER, host field (ADD/DELETE), ADD/DEL LIST, comment
|
|
251
|
-
field (COMMENT), GENERATE REPORT select,
|
|
252
|
-
- **
|
|
253
|
-
counters and the log stay as they are (header shows `PAUSED`, the button turns red and reads `
|
|
263
|
+
field (COMMENT), GENERATE REPORT select, PAUSE/RESUME button.
|
|
264
|
+
- **PAUSE / RESUME** (last button of row 2): `PAUSE` pauses the check - no pings are sent, the table, the
|
|
265
|
+
counters and the log stay as they are (header shows `PAUSED`, the button turns red and reads `RESUME`).
|
|
254
266
|
Commands (view, sort, filter, ADD/DELETE ...) keep working while paused; added hosts are pinged after
|
|
255
|
-
`
|
|
267
|
+
`RESUME`. A round that is running when `PAUSE` is pressed is cut short. The log gets the comment rows
|
|
256
268
|
`CHECK PAUSED` / `CHECK RESUMED`; epinga.py shows the pause as a gap in the timeline
|
|
257
269
|
(grey, like missing data) and does not count it as time in any state. Works in `-web` and `-wvc` (no CLI key); not in the read-only view (`-wv`).
|
|
258
270
|
- View select, sort order select, address mode select and ADV OPTIONS all match the
|
|
@@ -342,13 +354,14 @@ directly, `D` resets the selected option to its default, `R` resets all, ESC/`X`
|
|
|
342
354
|
|
|
343
355
|
| Option | Range | 0/-1 means |
|
|
344
356
|
|---|---|---|
|
|
345
|
-
| BACKOFF | 1 – 2 | — |
|
|
346
357
|
| TIMEOUT | 10 – 5000 ms | — |
|
|
347
358
|
| RETRIES | 0 – 5 | — |
|
|
348
359
|
| INTERVAL | -1 – 250 ms | `-1` = auto (use RATE), `0` = no pacing |
|
|
349
360
|
| THREADS | 0 – 32 | `0` = auto |
|
|
350
361
|
| WAIT TIME | 0 – 600 s | — |
|
|
351
362
|
| CONFIRM | 1 – 10 | — |
|
|
363
|
+
| NEW HOST GRACE | 0 – 60 s | — |
|
|
364
|
+
| SILENT LIMIT | 2 – 10 periods | — |
|
|
352
365
|
| RATE | 10 – 25000 pps | — |
|
|
353
366
|
| FLAP WINDOW | 1 – 72000 min | — |
|
|
354
367
|
| DNS TTL | 0 – 3600 s | — |
|
|
@@ -379,12 +392,11 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
379
392
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
380
393
|
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
381
394
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
382
|
-
| POST | `/api/log_sources` | `{"names":[...],"upload":false}` | SOURCE values of the named logfiles (empty = active logfile; `upload:true` = files stored by `/api/reportupload`), for the jump host dialog of GENERATE REPORT |
|
|
383
395
|
| POST | `/api/jumphost` | `{"action":"info|test|trust|connect|local","host":...,"port":...,"user":...,"secret":...,"hostkey":"ask|accept-new|off","key":...}` | JUMPHOST window (see *SSH source (JUMPHOST)*) |
|
|
384
396
|
|
|
385
397
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
386
398
|
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
387
|
-
`set_option`, `reset_options`, `run_report`, `pause` (value `1` =
|
|
399
|
+
`set_option`, `reset_options`, `run_report`, `pause` (value `1` = PAUSE, `0` = RESUME), `save_hosts_file`, `exit`. `adv_filter` value: JSON object `{"<field>":{"mode":"in|out","values":[...]}}` with the fields `model`,
|
|
388
400
|
`location`, `sysloc`, `type`, `comment`; `\u0001none` as value = hosts without a value; `{}` = off
|
|
389
401
|
`set_option`
|
|
390
402
|
value: `key=value`. `reset_log` value: logging off - optional custom file name (blank =
|
|
@@ -406,11 +418,11 @@ on a router) and a jump host sees one command instead of one per round.
|
|
|
406
418
|
- **Period:** fping pings every host once per period = `-w` (at least 200 ms), raised to
|
|
407
419
|
`hosts x interval + timeout` so one pass fits. A round ends when every host delivered a new
|
|
408
420
|
result (at most one period + timeout). RUNS counts only rounds in which hosts were checked.
|
|
409
|
-
- **UP / DOWN:** a reply = UP at once. DOWN after `-re` + 1 timeouts in a row
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
many consecutive non-UP results (suppressed count in the log's TBD column).
|
|
413
|
-
- **New hosts:** only an answer is reported during a grace period of (
|
|
421
|
+
- **UP / DOWN:** a reply = UP at once. DOWN after `-re` + 1 timeouts in a row (fewer when the ping period is
|
|
422
|
+
long: the number is cut to what fits in 2 x `-t`, at least 2), or when fping delivered nothing for a host for
|
|
423
|
+
`-sp` periods. fping drops replies later than `-t`, so `-t` is the longest a reply may take. With `-cf` > 1 a
|
|
424
|
+
host leaves UP only after that many consecutive non-UP results (suppressed count in the log's TBD column).
|
|
425
|
+
- **New hosts:** only an answer is reported during a grace period of (miss limit + 1) periods + `-ng` s (1 s) - a slow first
|
|
414
426
|
contact (new NAT / firewall state) must not show up as DOWN.
|
|
415
427
|
- **Names:** resolved by background threads (32 parallel, cached `-dns` seconds, randomized; an expired
|
|
416
428
|
entry stays in use until its refresh is done). A name without an address yet joins as soon as it
|
|
@@ -425,7 +437,7 @@ on a router) and a jump host sees one command instead of one per round.
|
|
|
425
437
|
- **Rate:** one process sends one packet per `-i` ms, `-ra` sets the packets/s. A pass over N hosts takes at
|
|
426
438
|
least N / `-ra` s: 32 000 hosts at `-ra 1000` = about 34 s per round. Raise `-ra` for big lists (mind the
|
|
427
439
|
router / NAT / jump host). `-i` floor is 1 ms; `-i 0` removes pacing.
|
|
428
|
-
-
|
|
440
|
+
- PAUSE stops the processes, RESUME starts them again.
|
|
429
441
|
|
|
430
442
|
## Options
|
|
431
443
|
|
|
@@ -441,13 +453,14 @@ separated) · `-r` IP range (comma separated, shortened end)
|
|
|
441
453
|
### Probing
|
|
442
454
|
| Option | Range | Default | Meaning |
|
|
443
455
|
|---|---|---|---|
|
|
444
|
-
| `-
|
|
445
|
-
| `-
|
|
446
|
-
| `-re` | 0 – 5 | 3 | DOWN after `-re` + 1 timeouts in a row |
|
|
456
|
+
| `-t` | 10 – 5000 | 1000 | ping timeout (ms): a reply later than this is lost |
|
|
457
|
+
| `-re` | 0 – 5 | 3 | DOWN after up to `-re` + 1 timeouts in a row (see *How checking works*) |
|
|
447
458
|
| `-i` | -1 – 250 | auto | send interval (ms), overrides `-ra`; `-1` auto, `0` unpaced |
|
|
448
459
|
| `-p` | 0 – 32 | auto | fping processes per address family |
|
|
449
460
|
| `-w` | 0 – 600 | 0.5 | ping period per host (s, at least 0.2) |
|
|
450
461
|
| `-cf` | 1 – 10 | 2 | consecutive DOWN before leaving UP (`1` = off) |
|
|
462
|
+
| `-ng` | 0 – 60 | 1 | seconds added to the grace period of new hosts |
|
|
463
|
+
| `-sp` | 2 – 10 | 3 | silent ping periods (no fping output) until DOWN |
|
|
451
464
|
| `-ra` | 10 – 25000 | 1000 | ICMP packets/s |
|
|
452
465
|
| `-fw` | 1 – 72000 | 72000 | minutes to count as flapping |
|
|
453
466
|
| `-dns` | 0 – 3600 | 300 | hostname cache TTL (s, `0` off) |
|
|
@@ -581,7 +594,7 @@ exit, a full notice prints once:
|
|
|
581
594
|
https://github.com/ewaldj/eping
|
|
582
595
|
```
|
|
583
596
|
|
|
584
|
-
Shown on any terminal-driven exit (CLI `[E]`/Ctrl-C, `-web`'s
|
|
597
|
+
Shown on any terminal-driven exit (CLI `[E]`/Ctrl-C, `-web`'s STOP/Ctrl-C in its
|
|
585
598
|
terminal). The web GUI's in-browser banner is separate and shorter.
|
|
586
599
|
|
|
587
600
|
## Run analysis on exit
|
|
@@ -594,7 +607,7 @@ Run an analysis of this logfile with epinga.py now? [y/N]:
|
|
|
594
607
|
|
|
595
608
|
`y` (case-insensitive) runs `epinga.py -f <logfile>` before exit; anything else skips
|
|
596
609
|
it. Only asked on a terminal-driven exit (CLI `[E]`/Ctrl-C, or `-wv`/`-wvc`'s own
|
|
597
|
-
keyboard `[E]`/Ctrl-C); exiting via a browser's
|
|
610
|
+
keyboard `[E]`/Ctrl-C); exiting via a browser's STOP button never asks. No prompt if
|
|
598
611
|
logging is off or the logfile is empty/missing.
|
|
599
612
|
|
|
600
613
|
## GENERATE REPORT (web gui) / ANALYSE NOW (CLI `N`)
|
|
@@ -604,22 +617,16 @@ running - not just at exit. Web: GENERATE REPORT dropdown, four entries - `ACTIV
|
|
|
604
617
|
LOGFILE` analyses the active CSV log (needs logging on, non-empty logfile, else the tab
|
|
605
618
|
closes and a footer error is shown), `CHOOSE LOGFILE` picks one or more `.csv` files in
|
|
606
619
|
the working dir - table (name/size/date), "select all" checkbox, nothing preselected;
|
|
607
|
-
up to 25 files per report, checking a 26th is refused. If a log holds more than one source (`local` and jump hosts, log column `SOURCE`), a
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
All report entries (`ACTIVE LOGFILE`, `CHOOSE LOGFILE`, `UPLOAD FROM CLIENT`) check the selected log(s) first: if they hold more than one
|
|
612
|
-
source (measuring host changed between local and jump hosts, or between jump hosts), a dialog offers to analyse all,
|
|
613
|
-
one or several sources (all checked = default; CANCEL aborts the report). With one source the report starts directly.
|
|
614
|
-
The report tab opens only after this choice; if the browser blocks it (e.g. after a long upload), a REPORT READY dialog with an OPEN REPORT button appears.
|
|
620
|
+
up to 25 files per report, checking a 26th is refused. If a log holds more than one source (`local` and jump hosts, log column `SOURCE`), the report contains all of them and a
|
|
621
|
+
source switch (see *Source switch in the HTML report*); no dialog.
|
|
622
|
+
|
|
623
|
+
The report tab opens right away; if the browser blocks it (e.g. after a long upload), a REPORT READY dialog with an OPEN REPORT button appears.
|
|
615
624
|
While the report is generated the waiting tab shows a progress bar with the step (merging files / analysing / analysing source N of M / writing report), the percentage and an estimated remaining time (extrapolated from the elapsed time, shown after a few seconds); without a tab the same text is shown in the footer. The percentage covers all passes (the main analysis plus one per source, see *Source switch*).
|
|
616
625
|
|
|
617
626
|
`UPLOAD FROM CLIENT` picks one or more `.csv` logfiles on the computer running the browser (max 25, 1 GB each);
|
|
618
627
|
they are uploaded to a server temp dir, merged like `CHOOSE LOGFILE` and analysed as one report. Temp files and
|
|
619
628
|
report are removed when eping.py exits or on the next upload.
|
|
620
629
|
|
|
621
|
-

|
|
622
|
-
|
|
623
630
|
More than one selected file is merged chronologically (by the row timestamps, streamed) into one temporary
|
|
624
631
|
CSV, analysed as a single logfile, then the temp file is removed. Result opens in a new
|
|
625
632
|
tab; if a selected file was invalid or has meanwhile been removed (e.g. by log rotation
|
|
@@ -733,7 +740,7 @@ With `-debug` a round longer than 10 s is also logged as a `SLOW ROUND` comment
|
|
|
733
740
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
734
741
|
- Needs an fping with `-l` and per-target sequence numbers (fping 4.3 or newer; the Windows / macOS packages have it).
|
|
735
742
|
|
|
736
|
-
# epinga.py 2.
|
|
743
|
+
# epinga.py 2.47
|
|
737
744
|
|
|
738
745
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
739
746
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
# eping.py 4.
|
|
1
|
+
# eping.py 4.76
|
|
2
2
|
|
|
3
3
|
Continuous ICMP reachability monitor built on `fping`. Scans a host list in a loop,
|
|
4
4
|
reports each host UP/DOWN/NO-DNS, counts state changes. CLI (curses) or web GUI.
|
|
5
5
|
|
|
6
6
|
Written by Ewald Jeitler — <https://www.jeitler.cc>
|
|
7
7
|
|
|
8
|
+
## Screenshots
|
|
9
|
+
|
|
10
|
+
Web GUI (`-web`) - 61 demo hosts, mouse-over shows the host details and its state history:
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
Terminal (curses) mode:
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
8
20
|
## Requirements
|
|
9
21
|
|
|
10
22
|
- Python 3.6+ (eping.py and epinga.py)
|
|
@@ -227,13 +239,13 @@ Single self-contained page, no external resources.
|
|
|
227
239
|
- Toolbar, two rows (wraps if narrow):
|
|
228
240
|
- Row 1: view select (9 views), sort order select, SET REFERENCE, ZERO CHANGES,
|
|
229
241
|
CLEAR ALL, address mode select, GET NAMES, ADV OPTIONS, LOGGING, FILE OPERATIONS
|
|
230
|
-
select,
|
|
242
|
+
select, STOP, font size.
|
|
231
243
|
- Row 2: match filter (SET/CLEAR), ADV FILTER, host field (ADD/DELETE), ADD/DEL LIST, comment
|
|
232
|
-
field (COMMENT), GENERATE REPORT select,
|
|
233
|
-
- **
|
|
234
|
-
counters and the log stay as they are (header shows `PAUSED`, the button turns red and reads `
|
|
244
|
+
field (COMMENT), GENERATE REPORT select, PAUSE/RESUME button.
|
|
245
|
+
- **PAUSE / RESUME** (last button of row 2): `PAUSE` pauses the check - no pings are sent, the table, the
|
|
246
|
+
counters and the log stay as they are (header shows `PAUSED`, the button turns red and reads `RESUME`).
|
|
235
247
|
Commands (view, sort, filter, ADD/DELETE ...) keep working while paused; added hosts are pinged after
|
|
236
|
-
`
|
|
248
|
+
`RESUME`. A round that is running when `PAUSE` is pressed is cut short. The log gets the comment rows
|
|
237
249
|
`CHECK PAUSED` / `CHECK RESUMED`; epinga.py shows the pause as a gap in the timeline
|
|
238
250
|
(grey, like missing data) and does not count it as time in any state. Works in `-web` and `-wvc` (no CLI key); not in the read-only view (`-wv`).
|
|
239
251
|
- View select, sort order select, address mode select and ADV OPTIONS all match the
|
|
@@ -323,13 +335,14 @@ directly, `D` resets the selected option to its default, `R` resets all, ESC/`X`
|
|
|
323
335
|
|
|
324
336
|
| Option | Range | 0/-1 means |
|
|
325
337
|
|---|---|---|
|
|
326
|
-
| BACKOFF | 1 – 2 | — |
|
|
327
338
|
| TIMEOUT | 10 – 5000 ms | — |
|
|
328
339
|
| RETRIES | 0 – 5 | — |
|
|
329
340
|
| INTERVAL | -1 – 250 ms | `-1` = auto (use RATE), `0` = no pacing |
|
|
330
341
|
| THREADS | 0 – 32 | `0` = auto |
|
|
331
342
|
| WAIT TIME | 0 – 600 s | — |
|
|
332
343
|
| CONFIRM | 1 – 10 | — |
|
|
344
|
+
| NEW HOST GRACE | 0 – 60 s | — |
|
|
345
|
+
| SILENT LIMIT | 2 – 10 periods | — |
|
|
333
346
|
| RATE | 10 – 25000 pps | — |
|
|
334
347
|
| FLAP WINDOW | 1 – 72000 min | — |
|
|
335
348
|
| DNS TTL | 0 – 3600 s | — |
|
|
@@ -360,12 +373,11 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
360
373
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
361
374
|
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
362
375
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
363
|
-
| POST | `/api/log_sources` | `{"names":[...],"upload":false}` | SOURCE values of the named logfiles (empty = active logfile; `upload:true` = files stored by `/api/reportupload`), for the jump host dialog of GENERATE REPORT |
|
|
364
376
|
| POST | `/api/jumphost` | `{"action":"info|test|trust|connect|local","host":...,"port":...,"user":...,"secret":...,"hostkey":"ask|accept-new|off","key":...}` | JUMPHOST window (see *SSH source (JUMPHOST)*) |
|
|
365
377
|
|
|
366
378
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
367
379
|
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
368
|
-
`set_option`, `reset_options`, `run_report`, `pause` (value `1` =
|
|
380
|
+
`set_option`, `reset_options`, `run_report`, `pause` (value `1` = PAUSE, `0` = RESUME), `save_hosts_file`, `exit`. `adv_filter` value: JSON object `{"<field>":{"mode":"in|out","values":[...]}}` with the fields `model`,
|
|
369
381
|
`location`, `sysloc`, `type`, `comment`; `\u0001none` as value = hosts without a value; `{}` = off
|
|
370
382
|
`set_option`
|
|
371
383
|
value: `key=value`. `reset_log` value: logging off - optional custom file name (blank =
|
|
@@ -387,11 +399,11 @@ on a router) and a jump host sees one command instead of one per round.
|
|
|
387
399
|
- **Period:** fping pings every host once per period = `-w` (at least 200 ms), raised to
|
|
388
400
|
`hosts x interval + timeout` so one pass fits. A round ends when every host delivered a new
|
|
389
401
|
result (at most one period + timeout). RUNS counts only rounds in which hosts were checked.
|
|
390
|
-
- **UP / DOWN:** a reply = UP at once. DOWN after `-re` + 1 timeouts in a row
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
many consecutive non-UP results (suppressed count in the log's TBD column).
|
|
394
|
-
- **New hosts:** only an answer is reported during a grace period of (
|
|
402
|
+
- **UP / DOWN:** a reply = UP at once. DOWN after `-re` + 1 timeouts in a row (fewer when the ping period is
|
|
403
|
+
long: the number is cut to what fits in 2 x `-t`, at least 2), or when fping delivered nothing for a host for
|
|
404
|
+
`-sp` periods. fping drops replies later than `-t`, so `-t` is the longest a reply may take. With `-cf` > 1 a
|
|
405
|
+
host leaves UP only after that many consecutive non-UP results (suppressed count in the log's TBD column).
|
|
406
|
+
- **New hosts:** only an answer is reported during a grace period of (miss limit + 1) periods + `-ng` s (1 s) - a slow first
|
|
395
407
|
contact (new NAT / firewall state) must not show up as DOWN.
|
|
396
408
|
- **Names:** resolved by background threads (32 parallel, cached `-dns` seconds, randomized; an expired
|
|
397
409
|
entry stays in use until its refresh is done). A name without an address yet joins as soon as it
|
|
@@ -406,7 +418,7 @@ on a router) and a jump host sees one command instead of one per round.
|
|
|
406
418
|
- **Rate:** one process sends one packet per `-i` ms, `-ra` sets the packets/s. A pass over N hosts takes at
|
|
407
419
|
least N / `-ra` s: 32 000 hosts at `-ra 1000` = about 34 s per round. Raise `-ra` for big lists (mind the
|
|
408
420
|
router / NAT / jump host). `-i` floor is 1 ms; `-i 0` removes pacing.
|
|
409
|
-
-
|
|
421
|
+
- PAUSE stops the processes, RESUME starts them again.
|
|
410
422
|
|
|
411
423
|
## Options
|
|
412
424
|
|
|
@@ -422,13 +434,14 @@ separated) · `-r` IP range (comma separated, shortened end)
|
|
|
422
434
|
### Probing
|
|
423
435
|
| Option | Range | Default | Meaning |
|
|
424
436
|
|---|---|---|---|
|
|
425
|
-
| `-
|
|
426
|
-
| `-
|
|
427
|
-
| `-re` | 0 – 5 | 3 | DOWN after `-re` + 1 timeouts in a row |
|
|
437
|
+
| `-t` | 10 – 5000 | 1000 | ping timeout (ms): a reply later than this is lost |
|
|
438
|
+
| `-re` | 0 – 5 | 3 | DOWN after up to `-re` + 1 timeouts in a row (see *How checking works*) |
|
|
428
439
|
| `-i` | -1 – 250 | auto | send interval (ms), overrides `-ra`; `-1` auto, `0` unpaced |
|
|
429
440
|
| `-p` | 0 – 32 | auto | fping processes per address family |
|
|
430
441
|
| `-w` | 0 – 600 | 0.5 | ping period per host (s, at least 0.2) |
|
|
431
442
|
| `-cf` | 1 – 10 | 2 | consecutive DOWN before leaving UP (`1` = off) |
|
|
443
|
+
| `-ng` | 0 – 60 | 1 | seconds added to the grace period of new hosts |
|
|
444
|
+
| `-sp` | 2 – 10 | 3 | silent ping periods (no fping output) until DOWN |
|
|
432
445
|
| `-ra` | 10 – 25000 | 1000 | ICMP packets/s |
|
|
433
446
|
| `-fw` | 1 – 72000 | 72000 | minutes to count as flapping |
|
|
434
447
|
| `-dns` | 0 – 3600 | 300 | hostname cache TTL (s, `0` off) |
|
|
@@ -562,7 +575,7 @@ exit, a full notice prints once:
|
|
|
562
575
|
https://github.com/ewaldj/eping
|
|
563
576
|
```
|
|
564
577
|
|
|
565
|
-
Shown on any terminal-driven exit (CLI `[E]`/Ctrl-C, `-web`'s
|
|
578
|
+
Shown on any terminal-driven exit (CLI `[E]`/Ctrl-C, `-web`'s STOP/Ctrl-C in its
|
|
566
579
|
terminal). The web GUI's in-browser banner is separate and shorter.
|
|
567
580
|
|
|
568
581
|
## Run analysis on exit
|
|
@@ -575,7 +588,7 @@ Run an analysis of this logfile with epinga.py now? [y/N]:
|
|
|
575
588
|
|
|
576
589
|
`y` (case-insensitive) runs `epinga.py -f <logfile>` before exit; anything else skips
|
|
577
590
|
it. Only asked on a terminal-driven exit (CLI `[E]`/Ctrl-C, or `-wv`/`-wvc`'s own
|
|
578
|
-
keyboard `[E]`/Ctrl-C); exiting via a browser's
|
|
591
|
+
keyboard `[E]`/Ctrl-C); exiting via a browser's STOP button never asks. No prompt if
|
|
579
592
|
logging is off or the logfile is empty/missing.
|
|
580
593
|
|
|
581
594
|
## GENERATE REPORT (web gui) / ANALYSE NOW (CLI `N`)
|
|
@@ -585,22 +598,16 @@ running - not just at exit. Web: GENERATE REPORT dropdown, four entries - `ACTIV
|
|
|
585
598
|
LOGFILE` analyses the active CSV log (needs logging on, non-empty logfile, else the tab
|
|
586
599
|
closes and a footer error is shown), `CHOOSE LOGFILE` picks one or more `.csv` files in
|
|
587
600
|
the working dir - table (name/size/date), "select all" checkbox, nothing preselected;
|
|
588
|
-
up to 25 files per report, checking a 26th is refused. If a log holds more than one source (`local` and jump hosts, log column `SOURCE`), a
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
All report entries (`ACTIVE LOGFILE`, `CHOOSE LOGFILE`, `UPLOAD FROM CLIENT`) check the selected log(s) first: if they hold more than one
|
|
593
|
-
source (measuring host changed between local and jump hosts, or between jump hosts), a dialog offers to analyse all,
|
|
594
|
-
one or several sources (all checked = default; CANCEL aborts the report). With one source the report starts directly.
|
|
595
|
-
The report tab opens only after this choice; if the browser blocks it (e.g. after a long upload), a REPORT READY dialog with an OPEN REPORT button appears.
|
|
601
|
+
up to 25 files per report, checking a 26th is refused. If a log holds more than one source (`local` and jump hosts, log column `SOURCE`), the report contains all of them and a
|
|
602
|
+
source switch (see *Source switch in the HTML report*); no dialog.
|
|
603
|
+
|
|
604
|
+
The report tab opens right away; if the browser blocks it (e.g. after a long upload), a REPORT READY dialog with an OPEN REPORT button appears.
|
|
596
605
|
While the report is generated the waiting tab shows a progress bar with the step (merging files / analysing / analysing source N of M / writing report), the percentage and an estimated remaining time (extrapolated from the elapsed time, shown after a few seconds); without a tab the same text is shown in the footer. The percentage covers all passes (the main analysis plus one per source, see *Source switch*).
|
|
597
606
|
|
|
598
607
|
`UPLOAD FROM CLIENT` picks one or more `.csv` logfiles on the computer running the browser (max 25, 1 GB each);
|
|
599
608
|
they are uploaded to a server temp dir, merged like `CHOOSE LOGFILE` and analysed as one report. Temp files and
|
|
600
609
|
report are removed when eping.py exits or on the next upload.
|
|
601
610
|
|
|
602
|
-

|
|
603
|
-
|
|
604
611
|
More than one selected file is merged chronologically (by the row timestamps, streamed) into one temporary
|
|
605
612
|
CSV, analysed as a single logfile, then the temp file is removed. Result opens in a new
|
|
606
613
|
tab; if a selected file was invalid or has meanwhile been removed (e.g. by log rotation
|
|
@@ -714,7 +721,7 @@ With `-debug` a round longer than 10 s is also logged as a `SLOW ROUND` comment
|
|
|
714
721
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
715
722
|
- Needs an fping with `-l` and per-target sequence numbers (fping 4.3 or newer; the Windows / macOS packages have it).
|
|
716
723
|
|
|
717
|
-
# epinga.py 2.
|
|
724
|
+
# epinga.py 2.47
|
|
718
725
|
|
|
719
726
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
720
727
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "eping"
|
|
7
|
-
version = "4.
|
|
7
|
+
version = "4.76"
|
|
8
8
|
description = "Continuous ICMP reachability monitor built on fping, with a CSV logfile analyser (epinga)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "GPL-3.0-or-later" }
|