eping 3.91__tar.gz → 4.0__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-3.91 → eping-4.0}/PKG-INFO +56 -9
- {eping-3.91 → eping-4.0}/README.md +55 -8
- {eping-3.91 → eping-4.0}/pyproject.toml +1 -1
- {eping-3.91 → eping-4.0}/src/eping/eping.py +903 -39
- {eping-3.91 → eping-4.0}/src/eping/epinga.py +113 -7
- {eping-3.91 → eping-4.0}/src/eping.egg-info/PKG-INFO +56 -9
- {eping-3.91 → eping-4.0}/LICENSE +0 -0
- {eping-3.91 → eping-4.0}/setup.cfg +0 -0
- {eping-3.91 → eping-4.0}/src/eping/__init__.py +0 -0
- {eping-3.91 → eping-4.0}/src/eping/_launch_eping.py +0 -0
- {eping-3.91 → eping-4.0}/src/eping.egg-info/SOURCES.txt +0 -0
- {eping-3.91 → eping-4.0}/src/eping.egg-info/dependency_links.txt +0 -0
- {eping-3.91 → eping-4.0}/src/eping.egg-info/entry_points.txt +0 -0
- {eping-3.91 → eping-4.0}/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:
|
|
3
|
+
Version: 4.0
|
|
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,7 +17,7 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Dynamic: license-file
|
|
19
19
|
|
|
20
|
-
# eping.py
|
|
20
|
+
# eping.py 4.00
|
|
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.
|
|
@@ -52,7 +52,7 @@ Portable Windows version (web GUI only, no installation): download and unpack
|
|
|
52
52
|
[`eping-windows.zip`](https://github.com/ewaldj/eping/blob/main/Windows_Version/eping-windows.zip)
|
|
53
53
|
([folder](https://github.com/ewaldj/eping/tree/main/Windows_Version/)), then start `eping.exe`.
|
|
54
54
|
|
|
55
|
-
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI),
|
|
55
|
+
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI, Disable autostart / logging / file, CLI options, Check updates),
|
|
56
56
|
`eping.py`, `epinga.py`, `fping.exe` + `cygwin1.dll` (fping for Windows) and an embedded Python.
|
|
57
57
|
- The web GUI opens in the browser (default `http://127.0.0.1:8080`). The port is read from the hosts file
|
|
58
58
|
(`opt: -port 9000`); a port already in use is reported and can be changed in the launcher window.
|
|
@@ -197,6 +197,7 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
197
197
|
| `C` | clear all hosts and state |
|
|
198
198
|
| `P` | address mode picker — 4 modes (see *Address modes*) |
|
|
199
199
|
| `X` | ADV OPTIONS — live option editing (see *ADV OPTIONS*) |
|
|
200
|
+
| `J` | JUMPHOST — run fping on a jump host via ssh (see *SSH source (JUMPHOST)*) |
|
|
200
201
|
| `N` | ANALYSE NOW — run epinga.py against the active logfile in the background (see *GENERATE REPORT*) |
|
|
201
202
|
| `G` | GET NAMES — reverse-DNS raw IPs, one-shot, background |
|
|
202
203
|
| `R` | redraw screen |
|
|
@@ -376,6 +377,8 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
376
377
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
377
378
|
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
378
379
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
380
|
+
| POST | `/api/log_sources` | `{"names":[...]}` | SOURCE values of the named logfiles (empty = active logfile), for SELECT JUMPHOST |
|
|
381
|
+
| 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)*) |
|
|
379
382
|
|
|
380
383
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
381
384
|
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
@@ -386,7 +389,7 @@ value: `key=value`. `reset_log` value: logging off - optional custom file name (
|
|
|
386
389
|
auto-generated); logging on - `y` (clear) or `new`/`new=<name>` (new file, optional
|
|
387
390
|
custom name). `run_report`: `value` = empty (active logfile) or one `.csv` filename; or
|
|
388
391
|
JSON body field `values`: `[...]` to merge and analyse multiple `.csv` files as one
|
|
389
|
-
(max 25). `save_hosts_file` value: optional target file name (blank
|
|
392
|
+
(max 25); optional body field `sources`: `[...]` restricts the analysis to these SOURCE values. `save_hosts_file` value: optional target file name (blank
|
|
390
393
|
= active `-f` hostfile, or `eping-hosts.txt` if none).
|
|
391
394
|
|
|
392
395
|
`-wv` answers `403` to `POST /api/command`/`/api/upload`; `-wvc`/`-web` allow both. No
|
|
@@ -441,6 +444,9 @@ separated) · `-r` IP range (comma separated, shortened end)
|
|
|
441
444
|
| `-ipo` | — | off | start with IP ONLY |
|
|
442
445
|
| `-gn` | — | off | GET NAMES once at startup |
|
|
443
446
|
| `-ncs` | — | off | skip `--check-source` |
|
|
447
|
+
| `-ssh` | `[USER@]HOST[:PORT]` | off | run fping on a jump host via ssh (see *SSH source (JUMPHOST)*) |
|
|
448
|
+
| `-sshkey` | file | agent | private key file for `-ssh` |
|
|
449
|
+
| `-sshhk` | accept-new/ask/off | accept-new | host key check for `-ssh` |
|
|
444
450
|
| `-ncf` | — | off | CSV: do not ping the CSV IP of a name without DNS record |
|
|
445
451
|
| `-up` | — | 0 | learning phase: after N rounds keep only hosts seen UP |
|
|
446
452
|
| `-setref` | — | off | with `-up`: hosts seen UP become new reference list |
|
|
@@ -468,11 +474,11 @@ Hard-enforced at startup and live via ADV OPTIONS (`-web` only), same bounds.
|
|
|
468
474
|
Unless `-dl`, every round appends to `eping-log_YYYY-MM-DD_HH:MM:SS.csv` (or `-o FILE`):
|
|
469
475
|
|
|
470
476
|
```
|
|
471
|
-
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP,INV_HOSTNAME,SERIAL_NUMBER,MODEL,LOCATION,SYSLOCATION,TYPE,INV_COMMENT
|
|
477
|
+
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP,INV_HOSTNAME,SERIAL_NUMBER,MODEL,LOCATION,SYSLOCATION,TYPE,INV_COMMENT,SOURCE
|
|
472
478
|
```
|
|
473
479
|
|
|
474
480
|
`INV_HOSTNAME` … `INV_COMMENT`: the inventory values of a host added from an inventory CSV (see
|
|
475
|
-
*Inventory CSV import*), empty for all other hosts. Logs without these columns (older
|
|
481
|
+
*Inventory CSV import*), empty for all other hosts. `SOURCE`: `local` or the ssh jump host that produced the row. Logs without these columns (older
|
|
476
482
|
versions) stay readable by epinga.py.
|
|
477
483
|
|
|
478
484
|
`TBD`: suppressed DOWN observations (`-cf`). `IP`: address actually pinged (empty for
|
|
@@ -498,6 +504,29 @@ these rows automatically.
|
|
|
498
504
|
- Logging off: same dialog, no clear option - `START LOGGING` starts a fresh file
|
|
499
505
|
right away, same optional custom name.
|
|
500
506
|
|
|
507
|
+
## SSH source (JUMPHOST)
|
|
508
|
+
|
|
509
|
+
Run fping on a jump host instead of locally (system `ssh` only). Any Linux host with a working `fping`
|
|
510
|
+
(e.g. a caretaker) will do; it resolves the names itself. Start: `-ssh [USER@]HOST[:PORT]` (+ `-sshkey FILE`, `-sshhk MODE`);
|
|
511
|
+
the password or key passphrase is asked on the terminal at startup. At runtime: `J` in the CLI,
|
|
512
|
+
JUMPHOST button in the web GUI (after ADV OPTIONS).
|
|
513
|
+
|
|
514
|
+

|
|
515
|
+
|
|
516
|
+
- Window: HOST, PORT, USER, PASSWORD (key passphrase), HOST KEY, KEY FILE. TEST checks ssh, login and
|
|
517
|
+
fping on the jump host, CONNECT switches the scan source, USE LOCAL switches back. A missing local
|
|
518
|
+
`ssh` is shown in the window.
|
|
519
|
+
- HOST KEY: `accept-new` (default) - hosts seen for the first time are trusted automatically, a changed
|
|
520
|
+
key is still refused; `ask` - an unknown key is shown with its fingerprint and must be accepted with
|
|
521
|
+
TRUST KEY; `off` - no check at all (insecure).
|
|
522
|
+
- The switch is applied at the start of the next round; hosts, states and counters are kept.
|
|
523
|
+
- Connection loss: results of the round are discarded, hosts keep their state, a banner is shown and
|
|
524
|
+
eping reconnects. Logged as `#COMMENT#` rows (`JUMPHOST ... OFFLINE: <reason>`, `JUMPHOST ... ONLINE
|
|
525
|
+
again`, `SOURCE SWITCH <old> -> <new>`), shown in the report's comment timeline.
|
|
526
|
+
- Log column `SOURCE`: `local` or the jump host of each row.
|
|
527
|
+
- Limits: GET NAMES and the CSV-IP fallback are not available over ssh; at most 4 ssh processes
|
|
528
|
+
(2 on Windows); the web password transfer is plain HTTP - use `-bind 127.0.0.1` or a trusted network.
|
|
529
|
+
|
|
501
530
|
## Web GUI header
|
|
502
531
|
|
|
503
532
|
Header: `eping.py vX.XX · © Ewald Jeitler · supervised by Nelly · tools.jeitler.cc ·
|
|
@@ -539,11 +568,17 @@ logging is off or the logfile is empty/missing.
|
|
|
539
568
|
## GENERATE REPORT (web gui) / ANALYSE NOW (CLI `N`)
|
|
540
569
|
|
|
541
570
|
Runs epinga.py against one or more logfiles in the background while eping.py keeps
|
|
542
|
-
running - not just at exit. Web: GENERATE REPORT dropdown,
|
|
571
|
+
running - not just at exit. Web: GENERATE REPORT dropdown, three entries - `ACTIVE
|
|
543
572
|
LOGFILE` analyses the active CSV log (needs logging on, non-empty logfile, else the tab
|
|
544
573
|
closes and a footer error is shown), `CHOOSE LOGFILE` picks one or more `.csv` files in
|
|
545
574
|
the working dir - table (name/size/date), "select all" checkbox, nothing preselected;
|
|
546
|
-
up to 25 files per report, checking a 26th is refused.
|
|
575
|
+
up to 25 files per report, checking a 26th is refused. `SELECT JUMPHOST` lists the
|
|
576
|
+
sources (`local` and jump hosts, log column `SOURCE`) found in the active logfile - all checked,
|
|
577
|
+
ENTER = GENERATE; only the periods of the checked sources are calculated (see *Source filter* in the
|
|
578
|
+
epinga.py section). Shown only if the log holds more than one source.
|
|
579
|
+
|
|
580
|
+

|
|
581
|
+
|
|
547
582
|
More than one selected file is merged chronologically (by mtime) into one temporary
|
|
548
583
|
CSV, analysed as a single logfile, then the temp file is removed. Result opens in a new
|
|
549
584
|
tab; if a selected file was invalid or has meanwhile been removed (e.g. by log rotation
|
|
@@ -654,7 +689,7 @@ phases: eping's own work (~0.12s on 4109 hosts).
|
|
|
654
689
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
655
690
|
- `-dr 0` produces flapping hosts in practice — keep the default of 1.
|
|
656
691
|
|
|
657
|
-
# epinga.py 2.
|
|
692
|
+
# epinga.py 2.37
|
|
658
693
|
|
|
659
694
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
660
695
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -679,6 +714,7 @@ Output: `<base>_report.txt` and `<base>_report.html` (`--html FILE` overrides).
|
|
|
679
714
|
| `-s`, `--start YYYY-MM-DD HH:MM:SS` | rows from this timestamp on |
|
|
680
715
|
| `-e`, `--end YYYY-MM-DD HH:MM:SS` | rows up to this timestamp |
|
|
681
716
|
| `-S`, `--sort {name,flapping,uptime,rtt}` | summary sort order (default `name`) |
|
|
717
|
+
| `--source SOURCE` | only rows of this source - `local` or the jump host label from the log column `SOURCE` (repeatable; see *Source filter*) |
|
|
682
718
|
| `--no-detail` | summary only |
|
|
683
719
|
| `--no-changes` | omit state-change list |
|
|
684
720
|
| `--html FILE` | custom HTML filename |
|
|
@@ -686,6 +722,17 @@ Output: `<base>_report.txt` and `<base>_report.html` (`--html FILE` overrides).
|
|
|
686
722
|
| `-q`, `--quiet` | suppress progress bar |
|
|
687
723
|
| `--no-version-check` | skip online update check |
|
|
688
724
|
|
|
725
|
+
## Source filter
|
|
726
|
+
|
|
727
|
+
Logs written while eping.py ran on a jump host carry a `SOURCE` column. With `--source` (or the
|
|
728
|
+
selection shown on a terminal when the log holds several sources; numbers like `1,3`, ENTER = all)
|
|
729
|
+
only the periods of the selected sources are calculated: uptime, up/down time, RTT, changes and the
|
|
730
|
+
timeline. Periods of other sources are excluded and shown as a gap in the timeline; a state change that
|
|
731
|
+
happened during such a gap is not counted. Without `--source` everything is combined (as before).
|
|
732
|
+
Logs without a `SOURCE` column are treated as `local`.
|
|
733
|
+
|
|
734
|
+

|
|
735
|
+
|
|
689
736
|
## Called from eping.py
|
|
690
737
|
|
|
691
738
|
`GENERATE REPORT` (web gui) and `N`/ANALYSE NOW (CLI) both run epinga.py in a
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# eping.py
|
|
1
|
+
# eping.py 4.00
|
|
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.
|
|
@@ -33,7 +33,7 @@ Portable Windows version (web GUI only, no installation): download and unpack
|
|
|
33
33
|
[`eping-windows.zip`](https://github.com/ewaldj/eping/blob/main/Windows_Version/eping-windows.zip)
|
|
34
34
|
([folder](https://github.com/ewaldj/eping/tree/main/Windows_Version/)), then start `eping.exe`.
|
|
35
35
|
|
|
36
|
-
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI),
|
|
36
|
+
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI, Disable autostart / logging / file, CLI options, Check updates),
|
|
37
37
|
`eping.py`, `epinga.py`, `fping.exe` + `cygwin1.dll` (fping for Windows) and an embedded Python.
|
|
38
38
|
- The web GUI opens in the browser (default `http://127.0.0.1:8080`). The port is read from the hosts file
|
|
39
39
|
(`opt: -port 9000`); a port already in use is reported and can be changed in the launcher window.
|
|
@@ -178,6 +178,7 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
178
178
|
| `C` | clear all hosts and state |
|
|
179
179
|
| `P` | address mode picker — 4 modes (see *Address modes*) |
|
|
180
180
|
| `X` | ADV OPTIONS — live option editing (see *ADV OPTIONS*) |
|
|
181
|
+
| `J` | JUMPHOST — run fping on a jump host via ssh (see *SSH source (JUMPHOST)*) |
|
|
181
182
|
| `N` | ANALYSE NOW — run epinga.py against the active logfile in the background (see *GENERATE REPORT*) |
|
|
182
183
|
| `G` | GET NAMES — reverse-DNS raw IPs, one-shot, background |
|
|
183
184
|
| `R` | redraw screen |
|
|
@@ -357,6 +358,8 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
357
358
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
358
359
|
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
359
360
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
361
|
+
| POST | `/api/log_sources` | `{"names":[...]}` | SOURCE values of the named logfiles (empty = active logfile), for SELECT JUMPHOST |
|
|
362
|
+
| 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)*) |
|
|
360
363
|
|
|
361
364
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
362
365
|
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
@@ -367,7 +370,7 @@ value: `key=value`. `reset_log` value: logging off - optional custom file name (
|
|
|
367
370
|
auto-generated); logging on - `y` (clear) or `new`/`new=<name>` (new file, optional
|
|
368
371
|
custom name). `run_report`: `value` = empty (active logfile) or one `.csv` filename; or
|
|
369
372
|
JSON body field `values`: `[...]` to merge and analyse multiple `.csv` files as one
|
|
370
|
-
(max 25). `save_hosts_file` value: optional target file name (blank
|
|
373
|
+
(max 25); optional body field `sources`: `[...]` restricts the analysis to these SOURCE values. `save_hosts_file` value: optional target file name (blank
|
|
371
374
|
= active `-f` hostfile, or `eping-hosts.txt` if none).
|
|
372
375
|
|
|
373
376
|
`-wv` answers `403` to `POST /api/command`/`/api/upload`; `-wvc`/`-web` allow both. No
|
|
@@ -422,6 +425,9 @@ separated) · `-r` IP range (comma separated, shortened end)
|
|
|
422
425
|
| `-ipo` | — | off | start with IP ONLY |
|
|
423
426
|
| `-gn` | — | off | GET NAMES once at startup |
|
|
424
427
|
| `-ncs` | — | off | skip `--check-source` |
|
|
428
|
+
| `-ssh` | `[USER@]HOST[:PORT]` | off | run fping on a jump host via ssh (see *SSH source (JUMPHOST)*) |
|
|
429
|
+
| `-sshkey` | file | agent | private key file for `-ssh` |
|
|
430
|
+
| `-sshhk` | accept-new/ask/off | accept-new | host key check for `-ssh` |
|
|
425
431
|
| `-ncf` | — | off | CSV: do not ping the CSV IP of a name without DNS record |
|
|
426
432
|
| `-up` | — | 0 | learning phase: after N rounds keep only hosts seen UP |
|
|
427
433
|
| `-setref` | — | off | with `-up`: hosts seen UP become new reference list |
|
|
@@ -449,11 +455,11 @@ Hard-enforced at startup and live via ADV OPTIONS (`-web` only), same bounds.
|
|
|
449
455
|
Unless `-dl`, every round appends to `eping-log_YYYY-MM-DD_HH:MM:SS.csv` (or `-o FILE`):
|
|
450
456
|
|
|
451
457
|
```
|
|
452
|
-
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP,INV_HOSTNAME,SERIAL_NUMBER,MODEL,LOCATION,SYSLOCATION,TYPE,INV_COMMENT
|
|
458
|
+
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP,INV_HOSTNAME,SERIAL_NUMBER,MODEL,LOCATION,SYSLOCATION,TYPE,INV_COMMENT,SOURCE
|
|
453
459
|
```
|
|
454
460
|
|
|
455
461
|
`INV_HOSTNAME` … `INV_COMMENT`: the inventory values of a host added from an inventory CSV (see
|
|
456
|
-
*Inventory CSV import*), empty for all other hosts. Logs without these columns (older
|
|
462
|
+
*Inventory CSV import*), empty for all other hosts. `SOURCE`: `local` or the ssh jump host that produced the row. Logs without these columns (older
|
|
457
463
|
versions) stay readable by epinga.py.
|
|
458
464
|
|
|
459
465
|
`TBD`: suppressed DOWN observations (`-cf`). `IP`: address actually pinged (empty for
|
|
@@ -479,6 +485,29 @@ these rows automatically.
|
|
|
479
485
|
- Logging off: same dialog, no clear option - `START LOGGING` starts a fresh file
|
|
480
486
|
right away, same optional custom name.
|
|
481
487
|
|
|
488
|
+
## SSH source (JUMPHOST)
|
|
489
|
+
|
|
490
|
+
Run fping on a jump host instead of locally (system `ssh` only). Any Linux host with a working `fping`
|
|
491
|
+
(e.g. a caretaker) will do; it resolves the names itself. Start: `-ssh [USER@]HOST[:PORT]` (+ `-sshkey FILE`, `-sshhk MODE`);
|
|
492
|
+
the password or key passphrase is asked on the terminal at startup. At runtime: `J` in the CLI,
|
|
493
|
+
JUMPHOST button in the web GUI (after ADV OPTIONS).
|
|
494
|
+
|
|
495
|
+

|
|
496
|
+
|
|
497
|
+
- Window: HOST, PORT, USER, PASSWORD (key passphrase), HOST KEY, KEY FILE. TEST checks ssh, login and
|
|
498
|
+
fping on the jump host, CONNECT switches the scan source, USE LOCAL switches back. A missing local
|
|
499
|
+
`ssh` is shown in the window.
|
|
500
|
+
- HOST KEY: `accept-new` (default) - hosts seen for the first time are trusted automatically, a changed
|
|
501
|
+
key is still refused; `ask` - an unknown key is shown with its fingerprint and must be accepted with
|
|
502
|
+
TRUST KEY; `off` - no check at all (insecure).
|
|
503
|
+
- The switch is applied at the start of the next round; hosts, states and counters are kept.
|
|
504
|
+
- Connection loss: results of the round are discarded, hosts keep their state, a banner is shown and
|
|
505
|
+
eping reconnects. Logged as `#COMMENT#` rows (`JUMPHOST ... OFFLINE: <reason>`, `JUMPHOST ... ONLINE
|
|
506
|
+
again`, `SOURCE SWITCH <old> -> <new>`), shown in the report's comment timeline.
|
|
507
|
+
- Log column `SOURCE`: `local` or the jump host of each row.
|
|
508
|
+
- Limits: GET NAMES and the CSV-IP fallback are not available over ssh; at most 4 ssh processes
|
|
509
|
+
(2 on Windows); the web password transfer is plain HTTP - use `-bind 127.0.0.1` or a trusted network.
|
|
510
|
+
|
|
482
511
|
## Web GUI header
|
|
483
512
|
|
|
484
513
|
Header: `eping.py vX.XX · © Ewald Jeitler · supervised by Nelly · tools.jeitler.cc ·
|
|
@@ -520,11 +549,17 @@ logging is off or the logfile is empty/missing.
|
|
|
520
549
|
## GENERATE REPORT (web gui) / ANALYSE NOW (CLI `N`)
|
|
521
550
|
|
|
522
551
|
Runs epinga.py against one or more logfiles in the background while eping.py keeps
|
|
523
|
-
running - not just at exit. Web: GENERATE REPORT dropdown,
|
|
552
|
+
running - not just at exit. Web: GENERATE REPORT dropdown, three entries - `ACTIVE
|
|
524
553
|
LOGFILE` analyses the active CSV log (needs logging on, non-empty logfile, else the tab
|
|
525
554
|
closes and a footer error is shown), `CHOOSE LOGFILE` picks one or more `.csv` files in
|
|
526
555
|
the working dir - table (name/size/date), "select all" checkbox, nothing preselected;
|
|
527
|
-
up to 25 files per report, checking a 26th is refused.
|
|
556
|
+
up to 25 files per report, checking a 26th is refused. `SELECT JUMPHOST` lists the
|
|
557
|
+
sources (`local` and jump hosts, log column `SOURCE`) found in the active logfile - all checked,
|
|
558
|
+
ENTER = GENERATE; only the periods of the checked sources are calculated (see *Source filter* in the
|
|
559
|
+
epinga.py section). Shown only if the log holds more than one source.
|
|
560
|
+
|
|
561
|
+

|
|
562
|
+
|
|
528
563
|
More than one selected file is merged chronologically (by mtime) into one temporary
|
|
529
564
|
CSV, analysed as a single logfile, then the temp file is removed. Result opens in a new
|
|
530
565
|
tab; if a selected file was invalid or has meanwhile been removed (e.g. by log rotation
|
|
@@ -635,7 +670,7 @@ phases: eping's own work (~0.12s on 4109 hosts).
|
|
|
635
670
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
636
671
|
- `-dr 0` produces flapping hosts in practice — keep the default of 1.
|
|
637
672
|
|
|
638
|
-
# epinga.py 2.
|
|
673
|
+
# epinga.py 2.37
|
|
639
674
|
|
|
640
675
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
641
676
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -660,6 +695,7 @@ Output: `<base>_report.txt` and `<base>_report.html` (`--html FILE` overrides).
|
|
|
660
695
|
| `-s`, `--start YYYY-MM-DD HH:MM:SS` | rows from this timestamp on |
|
|
661
696
|
| `-e`, `--end YYYY-MM-DD HH:MM:SS` | rows up to this timestamp |
|
|
662
697
|
| `-S`, `--sort {name,flapping,uptime,rtt}` | summary sort order (default `name`) |
|
|
698
|
+
| `--source SOURCE` | only rows of this source - `local` or the jump host label from the log column `SOURCE` (repeatable; see *Source filter*) |
|
|
663
699
|
| `--no-detail` | summary only |
|
|
664
700
|
| `--no-changes` | omit state-change list |
|
|
665
701
|
| `--html FILE` | custom HTML filename |
|
|
@@ -667,6 +703,17 @@ Output: `<base>_report.txt` and `<base>_report.html` (`--html FILE` overrides).
|
|
|
667
703
|
| `-q`, `--quiet` | suppress progress bar |
|
|
668
704
|
| `--no-version-check` | skip online update check |
|
|
669
705
|
|
|
706
|
+
## Source filter
|
|
707
|
+
|
|
708
|
+
Logs written while eping.py ran on a jump host carry a `SOURCE` column. With `--source` (or the
|
|
709
|
+
selection shown on a terminal when the log holds several sources; numbers like `1,3`, ENTER = all)
|
|
710
|
+
only the periods of the selected sources are calculated: uptime, up/down time, RTT, changes and the
|
|
711
|
+
timeline. Periods of other sources are excluded and shown as a gap in the timeline; a state change that
|
|
712
|
+
happened during such a gap is not counted. Without `--source` everything is combined (as before).
|
|
713
|
+
Logs without a `SOURCE` column are treated as `local`.
|
|
714
|
+
|
|
715
|
+

|
|
716
|
+
|
|
670
717
|
## Called from eping.py
|
|
671
718
|
|
|
672
719
|
`GENERATE REPORT` (web gui) and `N`/ANALYSE NOW (CLI) both run epinga.py in a
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "eping"
|
|
7
|
-
version = "
|
|
7
|
+
version = "4.00"
|
|
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" }
|