eping 3.59__tar.gz → 3.65__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.59 → eping-3.65}/PKG-INFO +69 -12
- {eping-3.59 → eping-3.65}/README.md +67 -10
- {eping-3.59 → eping-3.65}/pyproject.toml +2 -2
- {eping-3.59 → eping-3.65}/src/eping/eping.py +260 -56
- {eping-3.59 → eping-3.65}/src/eping/epinga.py +134 -11
- {eping-3.59 → eping-3.65}/src/eping.egg-info/PKG-INFO +69 -12
- {eping-3.59 → eping-3.65}/LICENSE +0 -0
- {eping-3.59 → eping-3.65}/setup.cfg +0 -0
- {eping-3.59 → eping-3.65}/src/eping/__init__.py +0 -0
- {eping-3.59 → eping-3.65}/src/eping/_launch_eping.py +0 -0
- {eping-3.59 → eping-3.65}/src/eping.egg-info/SOURCES.txt +0 -0
- {eping-3.59 → eping-3.65}/src/eping.egg-info/dependency_links.txt +0 -0
- {eping-3.59 → eping-3.65}/src/eping.egg-info/entry_points.txt +0 -0
- {eping-3.59 → eping-3.65}/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.
|
|
3
|
+
Version: 3.65
|
|
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
|
|
@@ -12,12 +12,12 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
12
12
|
Classifier: Operating System :: MacOS
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Topic :: System :: Networking :: Monitoring
|
|
15
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.6
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Dynamic: license-file
|
|
19
19
|
|
|
20
|
-
# eping.py 3.
|
|
20
|
+
# eping.py 3.65
|
|
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.
|
|
@@ -26,10 +26,11 @@ Written by Ewald Jeitler — <https://www.jeitler.cc>
|
|
|
26
26
|
|
|
27
27
|
## Requirements
|
|
28
28
|
|
|
29
|
-
- Python 3.6+
|
|
29
|
+
- Python 3.6+ (eping.py and epinga.py)
|
|
30
30
|
- `fping` in `$PATH`
|
|
31
31
|
- A terminal supporting `curs_set()` for CLI mode
|
|
32
32
|
- `--check-source` used automatically if fping supports it (5.0+)
|
|
33
|
+
- Non-UTF-8 terminal locale (e.g. `LANG=C`): works, but box-drawing characters are shown as ASCII/`?`; `LC_ALL=C.UTF-8` gives the full look
|
|
33
34
|
|
|
34
35
|
## Installation / Update
|
|
35
36
|
|
|
@@ -73,7 +74,7 @@ Combinable:
|
|
|
73
74
|
|
|
74
75
|
| Source | Option |
|
|
75
76
|
|---|---|
|
|
76
|
-
| Host file | `-f FILE[,FILE...]`, comma/space separated, disable with `-df` |
|
|
77
|
+
| Host file | `-f FILE[,FILE...]`, comma/space separated, disable with `-df`; `.txt` host list or inventory `.csv` (see *Inventory CSV import*) |
|
|
77
78
|
| CIDR network | `-n` (mask /13 … /32), comma separated |
|
|
78
79
|
| IP range | `-r`, `start-end`, comma separated |
|
|
79
80
|
|
|
@@ -122,6 +123,44 @@ never parse `opt:` lines, they're just text.
|
|
|
122
123
|
The default `eping-hosts.txt`: sample hosts, this section, then every CLI option as a
|
|
123
124
|
commented-out `opt:` line with its default (remove `# ` to activate).
|
|
124
125
|
|
|
126
|
+
## Inventory CSV import
|
|
127
|
+
|
|
128
|
+
A `.csv` inventory export (one device per row) can be used as host file: `-f FILE.csv`,
|
|
129
|
+
`F`/ADD FILE (CLI), web GUI ADD FILE (FROM CLIENT, FROM SERVER, drag and drop). Files
|
|
130
|
+
named `*.txt` are never treated as CSV - they keep the plain host file format above.
|
|
131
|
+
|
|
132
|
+
- **Detection**: first non-empty line is a header with the columns `IP Address` and
|
|
133
|
+
`Hostname` (case-insensitive); the delimiter (`;`, `,` or tab) is detected.
|
|
134
|
+
- **Columns used**: `IP Address`, `Hostname`, `Serial Number`, `Model`, `Location`,
|
|
135
|
+
`sysLocation`, `Type`, `Comment`. All other columns are ignored.
|
|
136
|
+
- **Host entry**: the IP address; rows without a valid IP are ignored. With PREFER
|
|
137
|
+
HOSTNAME (`-ph`, or that address mode active when the file is added) the entry is
|
|
138
|
+
the `Hostname` instead - rows without an IP are then pinged by name too (NO-DNS if it
|
|
139
|
+
does not resolve); a name that is not a valid hostname falls back to the IP.
|
|
140
|
+
Rows without a usable entry are ignored.
|
|
141
|
+
- **Duplicates**: one host per entry, the first row wins. The count of ignored and
|
|
142
|
+
duplicate rows is reported when the file is added (startup message / web footer).
|
|
143
|
+
- **Log**: the six inventory values and the CSV hostname are written with every row
|
|
144
|
+
of that host, see *Logging*. A `Hostname` that is not the host entry (IP mode) is
|
|
145
|
+
only kept there as information.
|
|
146
|
+
- Plain `.txt` hosts and `SAVE HOSTS FILE` carry no inventory values: a saved hosts
|
|
147
|
+
file lists only the host entries.
|
|
148
|
+
|
|
149
|
+
Example (`;` delimited, extra columns are ignored):
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Hostname;IP Address;Serial Number;Model;Location;sysLocation;Type;Comment
|
|
153
|
+
sw-core-01;10.0.0.1;FOC1234A1BC;C9300-48P;Vienna DC1;Rack A3;Switch;spare PSU missing
|
|
154
|
+
sw-core-02;10.0.0.2;FOC1234A1BD;C9300-48P;Vienna DC1;Rack A4;Switch;
|
|
155
|
+
ap-lobby-01;;FCW2528P5PSV;C9120AXI-E;Graz HQ;Lobby;AP;
|
|
156
|
+
rtr-edge-01;192.0.2.10;FTX9876B2CD;ISR4331;Linz POP;Rack B1;Router;uplink to ISP
|
|
157
|
+
sw-access-01;10.0.1.1;FOC5678C3DE;C9200L-24P;Vienna DC1;Rack C1;Switch;
|
|
158
|
+
fw-edge-01;192.0.2.1;JMX2345F6GH;ASA5516;Linz POP;Rack B2;Firewall;ASA 5516 - EoL 2027
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Without `-ph` this gives 5 hosts (the IP addresses); `ap-lobby-01` has no IP and is
|
|
162
|
+
ignored. With `-ph` it gives 6 hosts, named by `Hostname`.
|
|
163
|
+
|
|
125
164
|
## CLI mode
|
|
126
165
|
|
|
127
166
|
Sorted table (IPv4 numerically, then hostnames), 64-column blocks. Green = UP, red =
|
|
@@ -130,7 +169,7 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
130
169
|
| Key | Action |
|
|
131
170
|
|---|---|
|
|
132
171
|
| `U` | view picker — all 9 views (see *Views and sort orders*) |
|
|
133
|
-
| `M` | match filter — regex on hostname/IP, display only (see *Match filter*) |
|
|
172
|
+
| `M` | match filter — regex on hostname/IP and inventory fields, display only (see *Match filter*) |
|
|
134
173
|
| `A` | add host — IP, hostname, CIDR (/13…/32), or `ip1-ip2` (max 524288) |
|
|
135
174
|
| `D` | delete host — same formats/limits as add |
|
|
136
175
|
| `F` | add hosts from a file |
|
|
@@ -206,7 +245,8 @@ Single self-contained page, no external resources.
|
|
|
206
245
|
| DELETE FILES FROM SERVER | same picker as DOWNLOAD SELECTED FILES, red DELETE button, confirms with file count; active logfile can't be deleted |
|
|
207
246
|
| VIEW FILE FROM SERVER | picker: every `.csv`/`.txt` in the working dir, table (name/size/date), "select all"; opens each picked file read-only, raw content, COPY/DOWNLOAD buttons - see *VIEW FILE FROM SERVER* below |
|
|
208
247
|
- **ADD FILE** dropdown: `FROM CLIENT` (local file picker) / `FROM SERVER` (picks one
|
|
209
|
-
or more `.txt` files already on the server, adds their
|
|
248
|
+
or more `.txt` files or inventory `.csv` files already on the server, adds their
|
|
249
|
+
hosts; a `.csv` without the inventory header, e.g. an eping log, is refused).
|
|
210
250
|
- Keyboard shortcuts (no modifier, only while no text field has focus; own quick
|
|
211
251
|
variants, not the CLI's picker keys of the same letter): `U` cycles the original 3
|
|
212
252
|
views (ALL HOSTS → CURRENTLY-UP → UP+FLAPPING → ALL HOSTS), the other 6 need the
|
|
@@ -389,9 +429,13 @@ Hard-enforced at startup and live via ADV OPTIONS (`-web` only), same bounds.
|
|
|
389
429
|
Unless `-dl`, every round appends to `eping-log_YYYY-MM-DD_HH:MM:SS.csv` (or `-o FILE`):
|
|
390
430
|
|
|
391
431
|
```
|
|
392
|
-
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP
|
|
432
|
+
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP,INV_HOSTNAME,SERIAL_NUMBER,MODEL,LOCATION,SYSLOCATION,TYPE,INV_COMMENT
|
|
393
433
|
```
|
|
394
434
|
|
|
435
|
+
`INV_HOSTNAME` … `INV_COMMENT`: the inventory values of a host added from an inventory CSV (see
|
|
436
|
+
*Inventory CSV import*), empty for all other hosts. Logs without these columns (older
|
|
437
|
+
versions) stay readable by epinga.py.
|
|
438
|
+
|
|
395
439
|
`TBD`: suppressed DOWN observations (`-cf`). `IP`: address actually pinged (empty for
|
|
396
440
|
NO-DNS). Log rotates to a new file once it reaches `-lms` MB; a single round's data is
|
|
397
441
|
always written in full to one file, rotation only starts the next round in a new file.
|
|
@@ -487,7 +531,9 @@ limit shown in the modal text.
|
|
|
487
531
|
`PREFER HOSTNAME` (`-ph`): drops a raw-IP host from pinging when another entry resolves
|
|
488
532
|
to the same address. Redundancy check cached `-dns` seconds. `PREFER IP ADDRESS`: the
|
|
489
533
|
mirror - drops a hostname entry once its resolved address is already covered by a
|
|
490
|
-
raw-IP entry. Both non-destructive, restored by switching to another mode.
|
|
534
|
+
raw-IP entry. Both non-destructive, restored by switching to another mode. Starting
|
|
535
|
+
with `-ph` resolves every hostname first (in parallel): the CLI shows a PLEASE WAIT
|
|
536
|
+
box with an elapsed counter meanwhile, the web mode a line in the terminal.
|
|
491
537
|
|
|
492
538
|
`SWITCH TO IP ONLY` (`-ipo`): resolves every hostname to its address (v4/v6 per
|
|
493
539
|
`-4`/`-6`, A preferred by default) and renames it in place (history/uptime carry over).
|
|
@@ -513,7 +559,8 @@ message shows for 3s after. Re-triggering while running shows "already running".
|
|
|
513
559
|
## Match filter
|
|
514
560
|
|
|
515
561
|
`M` (CLI) / match filter field (web): case-insensitive regex, display only, matched
|
|
516
|
-
against shown name
|
|
562
|
+
against shown name, resolved IP and the inventory fields (CSV hostname, serial
|
|
563
|
+
number, model, location, sysLocation, type, comment). Every host keeps being pinged regardless. Empty
|
|
517
564
|
value turns it off. CLI: replaces the version banner with `MATCH FILTER '<regex>'
|
|
518
565
|
active (N of M hosts shown, all still pinged)`. Invalid regex: error shown, previous
|
|
519
566
|
filter unchanged.
|
|
@@ -543,7 +590,7 @@ phases: eping's own work (~0.12s on 4109 hosts).
|
|
|
543
590
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
544
591
|
- `-dr 0` produces flapping hosts in practice — keep the default of 1.
|
|
545
592
|
|
|
546
|
-
# epinga.py 2.
|
|
593
|
+
# epinga.py 2.35
|
|
547
594
|
|
|
548
595
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
549
596
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -593,13 +640,23 @@ Top bar: total/UP/flapping/DOWN/no-DNS/duplicate-host counts. Toolbar:
|
|
|
593
640
|
|
|
594
641
|
| Control | Does |
|
|
595
642
|
|---|---|
|
|
596
|
-
| Filter | text or regex (case-insensitive), hostname + IP; invalid regex falls back to substring |
|
|
643
|
+
| Filter | text or regex (case-insensitive), hostname + IP + inventory fields (CSV hostname, serial, model, location, sysLocation, type, comment); invalid regex falls back to substring |
|
|
597
644
|
| Show | restrict to one state (flapping independent of UP/DOWN/NO-DNS) |
|
|
598
645
|
| Sort | name / uptime% / avg RTT / changes; click a header, shift+click adds a tie-breaker (①②③ badge), shift+click again flips direction |
|
|
599
646
|
| IP View | toggle primary label hostname↔IP (table + buckets); independent of dedup |
|
|
600
647
|
| Deduplication | No dedup / Prefer IP / Prefer hostname - hides the redundant side across table, buckets, top-bar cards; DUPLICATES card is `0` once a mode is active |
|
|
648
|
+
| Reset | clears Filter, Show and the inventory drop-downs (sort, IP View and deduplication stay) |
|
|
601
649
|
| Download | saves the report exactly as shown (theme/dedup/sort/filter/collapsed state) as a standalone `.html`, client-side; hidden on `file://` |
|
|
602
650
|
|
|
651
|
+
**Inventory filters** (logs with inventory columns, see *Inventory CSV import*): to the
|
|
652
|
+
right of the top-bar counters, one drop-down each for Model, Location, sysLocation,
|
|
653
|
+
Type and Comment, listing the values found in the log with their host count (`(empty)` for hosts
|
|
654
|
+
without a value). They combine with each other and with Filter/Show and affect the
|
|
655
|
+
Host List only. A column without any value gets no drop-down; serial number and CSV
|
|
656
|
+
hostname are unique per device and searched via Filter instead. The drop-downs are
|
|
657
|
+
narrow; the one in use widens while it has focus and the others move aside. A host's detail shows
|
|
658
|
+
all inventory values, the Host List CSV download adds them as columns.
|
|
659
|
+
|
|
603
660
|
**Comments**: section above Host List from `#COMMENT#` rows, collapsed by default,
|
|
604
661
|
timestamp + text in log order. Also appear inline in a host's STATE CHANGES timeline
|
|
605
662
|
(orange, 💬 marker), HTML-escaped. Same merge in text output (`PER-HOST DETAIL`,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# eping.py 3.
|
|
1
|
+
# eping.py 3.65
|
|
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.
|
|
@@ -7,10 +7,11 @@ Written by Ewald Jeitler — <https://www.jeitler.cc>
|
|
|
7
7
|
|
|
8
8
|
## Requirements
|
|
9
9
|
|
|
10
|
-
- Python 3.6+
|
|
10
|
+
- Python 3.6+ (eping.py and epinga.py)
|
|
11
11
|
- `fping` in `$PATH`
|
|
12
12
|
- A terminal supporting `curs_set()` for CLI mode
|
|
13
13
|
- `--check-source` used automatically if fping supports it (5.0+)
|
|
14
|
+
- Non-UTF-8 terminal locale (e.g. `LANG=C`): works, but box-drawing characters are shown as ASCII/`?`; `LC_ALL=C.UTF-8` gives the full look
|
|
14
15
|
|
|
15
16
|
## Installation / Update
|
|
16
17
|
|
|
@@ -54,7 +55,7 @@ Combinable:
|
|
|
54
55
|
|
|
55
56
|
| Source | Option |
|
|
56
57
|
|---|---|
|
|
57
|
-
| Host file | `-f FILE[,FILE...]`, comma/space separated, disable with `-df` |
|
|
58
|
+
| Host file | `-f FILE[,FILE...]`, comma/space separated, disable with `-df`; `.txt` host list or inventory `.csv` (see *Inventory CSV import*) |
|
|
58
59
|
| CIDR network | `-n` (mask /13 … /32), comma separated |
|
|
59
60
|
| IP range | `-r`, `start-end`, comma separated |
|
|
60
61
|
|
|
@@ -103,6 +104,44 @@ never parse `opt:` lines, they're just text.
|
|
|
103
104
|
The default `eping-hosts.txt`: sample hosts, this section, then every CLI option as a
|
|
104
105
|
commented-out `opt:` line with its default (remove `# ` to activate).
|
|
105
106
|
|
|
107
|
+
## Inventory CSV import
|
|
108
|
+
|
|
109
|
+
A `.csv` inventory export (one device per row) can be used as host file: `-f FILE.csv`,
|
|
110
|
+
`F`/ADD FILE (CLI), web GUI ADD FILE (FROM CLIENT, FROM SERVER, drag and drop). Files
|
|
111
|
+
named `*.txt` are never treated as CSV - they keep the plain host file format above.
|
|
112
|
+
|
|
113
|
+
- **Detection**: first non-empty line is a header with the columns `IP Address` and
|
|
114
|
+
`Hostname` (case-insensitive); the delimiter (`;`, `,` or tab) is detected.
|
|
115
|
+
- **Columns used**: `IP Address`, `Hostname`, `Serial Number`, `Model`, `Location`,
|
|
116
|
+
`sysLocation`, `Type`, `Comment`. All other columns are ignored.
|
|
117
|
+
- **Host entry**: the IP address; rows without a valid IP are ignored. With PREFER
|
|
118
|
+
HOSTNAME (`-ph`, or that address mode active when the file is added) the entry is
|
|
119
|
+
the `Hostname` instead - rows without an IP are then pinged by name too (NO-DNS if it
|
|
120
|
+
does not resolve); a name that is not a valid hostname falls back to the IP.
|
|
121
|
+
Rows without a usable entry are ignored.
|
|
122
|
+
- **Duplicates**: one host per entry, the first row wins. The count of ignored and
|
|
123
|
+
duplicate rows is reported when the file is added (startup message / web footer).
|
|
124
|
+
- **Log**: the six inventory values and the CSV hostname are written with every row
|
|
125
|
+
of that host, see *Logging*. A `Hostname` that is not the host entry (IP mode) is
|
|
126
|
+
only kept there as information.
|
|
127
|
+
- Plain `.txt` hosts and `SAVE HOSTS FILE` carry no inventory values: a saved hosts
|
|
128
|
+
file lists only the host entries.
|
|
129
|
+
|
|
130
|
+
Example (`;` delimited, extra columns are ignored):
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Hostname;IP Address;Serial Number;Model;Location;sysLocation;Type;Comment
|
|
134
|
+
sw-core-01;10.0.0.1;FOC1234A1BC;C9300-48P;Vienna DC1;Rack A3;Switch;spare PSU missing
|
|
135
|
+
sw-core-02;10.0.0.2;FOC1234A1BD;C9300-48P;Vienna DC1;Rack A4;Switch;
|
|
136
|
+
ap-lobby-01;;FCW2528P5PSV;C9120AXI-E;Graz HQ;Lobby;AP;
|
|
137
|
+
rtr-edge-01;192.0.2.10;FTX9876B2CD;ISR4331;Linz POP;Rack B1;Router;uplink to ISP
|
|
138
|
+
sw-access-01;10.0.1.1;FOC5678C3DE;C9200L-24P;Vienna DC1;Rack C1;Switch;
|
|
139
|
+
fw-edge-01;192.0.2.1;JMX2345F6GH;ASA5516;Linz POP;Rack B2;Firewall;ASA 5516 - EoL 2027
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Without `-ph` this gives 5 hosts (the IP addresses); `ap-lobby-01` has no IP and is
|
|
143
|
+
ignored. With `-ph` it gives 6 hosts, named by `Hostname`.
|
|
144
|
+
|
|
106
145
|
## CLI mode
|
|
107
146
|
|
|
108
147
|
Sorted table (IPv4 numerically, then hostnames), 64-column blocks. Green = UP, red =
|
|
@@ -111,7 +150,7 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
111
150
|
| Key | Action |
|
|
112
151
|
|---|---|
|
|
113
152
|
| `U` | view picker — all 9 views (see *Views and sort orders*) |
|
|
114
|
-
| `M` | match filter — regex on hostname/IP, display only (see *Match filter*) |
|
|
153
|
+
| `M` | match filter — regex on hostname/IP and inventory fields, display only (see *Match filter*) |
|
|
115
154
|
| `A` | add host — IP, hostname, CIDR (/13…/32), or `ip1-ip2` (max 524288) |
|
|
116
155
|
| `D` | delete host — same formats/limits as add |
|
|
117
156
|
| `F` | add hosts from a file |
|
|
@@ -187,7 +226,8 @@ Single self-contained page, no external resources.
|
|
|
187
226
|
| DELETE FILES FROM SERVER | same picker as DOWNLOAD SELECTED FILES, red DELETE button, confirms with file count; active logfile can't be deleted |
|
|
188
227
|
| VIEW FILE FROM SERVER | picker: every `.csv`/`.txt` in the working dir, table (name/size/date), "select all"; opens each picked file read-only, raw content, COPY/DOWNLOAD buttons - see *VIEW FILE FROM SERVER* below |
|
|
189
228
|
- **ADD FILE** dropdown: `FROM CLIENT` (local file picker) / `FROM SERVER` (picks one
|
|
190
|
-
or more `.txt` files already on the server, adds their
|
|
229
|
+
or more `.txt` files or inventory `.csv` files already on the server, adds their
|
|
230
|
+
hosts; a `.csv` without the inventory header, e.g. an eping log, is refused).
|
|
191
231
|
- Keyboard shortcuts (no modifier, only while no text field has focus; own quick
|
|
192
232
|
variants, not the CLI's picker keys of the same letter): `U` cycles the original 3
|
|
193
233
|
views (ALL HOSTS → CURRENTLY-UP → UP+FLAPPING → ALL HOSTS), the other 6 need the
|
|
@@ -370,9 +410,13 @@ Hard-enforced at startup and live via ADV OPTIONS (`-web` only), same bounds.
|
|
|
370
410
|
Unless `-dl`, every round appends to `eping-log_YYYY-MM-DD_HH:MM:SS.csv` (or `-o FILE`):
|
|
371
411
|
|
|
372
412
|
```
|
|
373
|
-
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP
|
|
413
|
+
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP,INV_HOSTNAME,SERIAL_NUMBER,MODEL,LOCATION,SYSLOCATION,TYPE,INV_COMMENT
|
|
374
414
|
```
|
|
375
415
|
|
|
416
|
+
`INV_HOSTNAME` … `INV_COMMENT`: the inventory values of a host added from an inventory CSV (see
|
|
417
|
+
*Inventory CSV import*), empty for all other hosts. Logs without these columns (older
|
|
418
|
+
versions) stay readable by epinga.py.
|
|
419
|
+
|
|
376
420
|
`TBD`: suppressed DOWN observations (`-cf`). `IP`: address actually pinged (empty for
|
|
377
421
|
NO-DNS). Log rotates to a new file once it reaches `-lms` MB; a single round's data is
|
|
378
422
|
always written in full to one file, rotation only starts the next round in a new file.
|
|
@@ -468,7 +512,9 @@ limit shown in the modal text.
|
|
|
468
512
|
`PREFER HOSTNAME` (`-ph`): drops a raw-IP host from pinging when another entry resolves
|
|
469
513
|
to the same address. Redundancy check cached `-dns` seconds. `PREFER IP ADDRESS`: the
|
|
470
514
|
mirror - drops a hostname entry once its resolved address is already covered by a
|
|
471
|
-
raw-IP entry. Both non-destructive, restored by switching to another mode.
|
|
515
|
+
raw-IP entry. Both non-destructive, restored by switching to another mode. Starting
|
|
516
|
+
with `-ph` resolves every hostname first (in parallel): the CLI shows a PLEASE WAIT
|
|
517
|
+
box with an elapsed counter meanwhile, the web mode a line in the terminal.
|
|
472
518
|
|
|
473
519
|
`SWITCH TO IP ONLY` (`-ipo`): resolves every hostname to its address (v4/v6 per
|
|
474
520
|
`-4`/`-6`, A preferred by default) and renames it in place (history/uptime carry over).
|
|
@@ -494,7 +540,8 @@ message shows for 3s after. Re-triggering while running shows "already running".
|
|
|
494
540
|
## Match filter
|
|
495
541
|
|
|
496
542
|
`M` (CLI) / match filter field (web): case-insensitive regex, display only, matched
|
|
497
|
-
against shown name
|
|
543
|
+
against shown name, resolved IP and the inventory fields (CSV hostname, serial
|
|
544
|
+
number, model, location, sysLocation, type, comment). Every host keeps being pinged regardless. Empty
|
|
498
545
|
value turns it off. CLI: replaces the version banner with `MATCH FILTER '<regex>'
|
|
499
546
|
active (N of M hosts shown, all still pinged)`. Invalid regex: error shown, previous
|
|
500
547
|
filter unchanged.
|
|
@@ -524,7 +571,7 @@ phases: eping's own work (~0.12s on 4109 hosts).
|
|
|
524
571
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
525
572
|
- `-dr 0` produces flapping hosts in practice — keep the default of 1.
|
|
526
573
|
|
|
527
|
-
# epinga.py 2.
|
|
574
|
+
# epinga.py 2.35
|
|
528
575
|
|
|
529
576
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
530
577
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -574,13 +621,23 @@ Top bar: total/UP/flapping/DOWN/no-DNS/duplicate-host counts. Toolbar:
|
|
|
574
621
|
|
|
575
622
|
| Control | Does |
|
|
576
623
|
|---|---|
|
|
577
|
-
| Filter | text or regex (case-insensitive), hostname + IP; invalid regex falls back to substring |
|
|
624
|
+
| Filter | text or regex (case-insensitive), hostname + IP + inventory fields (CSV hostname, serial, model, location, sysLocation, type, comment); invalid regex falls back to substring |
|
|
578
625
|
| Show | restrict to one state (flapping independent of UP/DOWN/NO-DNS) |
|
|
579
626
|
| Sort | name / uptime% / avg RTT / changes; click a header, shift+click adds a tie-breaker (①②③ badge), shift+click again flips direction |
|
|
580
627
|
| IP View | toggle primary label hostname↔IP (table + buckets); independent of dedup |
|
|
581
628
|
| Deduplication | No dedup / Prefer IP / Prefer hostname - hides the redundant side across table, buckets, top-bar cards; DUPLICATES card is `0` once a mode is active |
|
|
629
|
+
| Reset | clears Filter, Show and the inventory drop-downs (sort, IP View and deduplication stay) |
|
|
582
630
|
| Download | saves the report exactly as shown (theme/dedup/sort/filter/collapsed state) as a standalone `.html`, client-side; hidden on `file://` |
|
|
583
631
|
|
|
632
|
+
**Inventory filters** (logs with inventory columns, see *Inventory CSV import*): to the
|
|
633
|
+
right of the top-bar counters, one drop-down each for Model, Location, sysLocation,
|
|
634
|
+
Type and Comment, listing the values found in the log with their host count (`(empty)` for hosts
|
|
635
|
+
without a value). They combine with each other and with Filter/Show and affect the
|
|
636
|
+
Host List only. A column without any value gets no drop-down; serial number and CSV
|
|
637
|
+
hostname are unique per device and searched via Filter instead. The drop-downs are
|
|
638
|
+
narrow; the one in use widens while it has focus and the others move aside. A host's detail shows
|
|
639
|
+
all inventory values, the Host List CSV download adds them as columns.
|
|
640
|
+
|
|
584
641
|
**Comments**: section above Host List from `#COMMENT#` rows, collapsed by default,
|
|
585
642
|
timestamp + text in log order. Also appear inline in a host's STATE CHANGES timeline
|
|
586
643
|
(orange, 💬 marker), HTML-escaped. Same merge in text output (`PER-HOST DETAIL`,
|
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "eping"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.65"
|
|
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" }
|
|
11
11
|
authors = [{ name = "Ewald Jeitler", email = "ewald@jeitler.cc" }]
|
|
12
|
-
requires-python = ">=3.
|
|
12
|
+
requires-python = ">=3.6"
|
|
13
13
|
classifiers = [
|
|
14
14
|
"Environment :: Console :: Curses",
|
|
15
15
|
"Intended Audience :: System Administrators",
|