eping 3.60__tar.gz → 3.84__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.60 → eping-3.84}/PKG-INFO +147 -33
- {eping-3.60 → eping-3.84}/README.md +145 -31
- {eping-3.60 → eping-3.84}/pyproject.toml +2 -2
- {eping-3.60 → eping-3.84}/src/eping/__init__.py +0 -0
- {eping-3.60 → eping-3.84}/src/eping/_launch_eping.py +0 -0
- {eping-3.60 → eping-3.84}/src/eping/eping.py +1566 -160
- {eping-3.60 → eping-3.84}/src/eping/epinga.py +134 -11
- {eping-3.60 → eping-3.84}/src/eping.egg-info/PKG-INFO +147 -33
- {eping-3.60 → eping-3.84}/LICENSE +0 -0
- {eping-3.60 → eping-3.84}/setup.cfg +0 -0
- {eping-3.60 → eping-3.84}/src/eping.egg-info/SOURCES.txt +0 -0
- {eping-3.60 → eping-3.84}/src/eping.egg-info/dependency_links.txt +0 -0
- {eping-3.60 → eping-3.84}/src/eping.egg-info/entry_points.txt +0 -0
- {eping-3.60 → eping-3.84}/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.84
|
|
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.84
|
|
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
|
|
|
@@ -47,6 +48,19 @@ Standalone scripts (installs/updates `eping.py`, `epinga.py`, `esplit.py`):
|
|
|
47
48
|
|
|
48
49
|
`esplit.py` isn't part of the pip package - use the standalone install for it.
|
|
49
50
|
|
|
51
|
+
## Windows
|
|
52
|
+
|
|
53
|
+
Portable Windows version (web GUI only, no installation): download and unpack
|
|
54
|
+
[`eping-windows.zip`](https://github.com/ewaldj/eping/blob/main/Windows_Version/eping-windows.zip)
|
|
55
|
+
([folder](https://github.com/ewaldj/eping/tree/main/Windows_Version/)), then start `eping.exe`.
|
|
56
|
+
|
|
57
|
+
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI),
|
|
58
|
+
`eping.py`, `epinga.py`, `fping.exe` + `cygwin1.dll` (fping for Windows) and an embedded Python.
|
|
59
|
+
- The web GUI opens in the browser (default `http://127.0.0.1:8080`). The port is read from the hosts file
|
|
60
|
+
(`opt: -port 9000`); a port already in use is reported and can be changed in the launcher window.
|
|
61
|
+
- No terminal (curses) mode and no `-wv`/`-wvc` on Windows; log file names use `-` instead of `:`.
|
|
62
|
+
- Extra options: put them in `eping-args.txt` next to `eping.exe`. Details: `README-WINDOWS.txt` in the zip.
|
|
63
|
+
|
|
50
64
|
## Quick start
|
|
51
65
|
|
|
52
66
|
pip install: use `eping`/`epinga` instead of `./eping.py`/`./epinga.py` below.
|
|
@@ -60,7 +74,7 @@ pip install: use `eping`/`epinga` instead of `./eping.py`/`./epinga.py` below.
|
|
|
60
74
|
./eping.py -wvc # CLI + controllable web view
|
|
61
75
|
```
|
|
62
76
|
|
|
63
|
-
No args: creates a sample `eping-hosts.txt
|
|
77
|
+
No args: creates a sample `eping-hosts.txt` and `eping-hosts-sample.csv` (same hosts with invented inventory values, a template for the *Inventory CSV import*; never loaded by eping). `-df`: start with no hosts, add at runtime.
|
|
64
78
|
|
|
65
79
|
### Running unattended (screen / tmux)
|
|
66
80
|
|
|
@@ -73,7 +87,7 @@ Combinable:
|
|
|
73
87
|
|
|
74
88
|
| Source | Option |
|
|
75
89
|
|---|---|
|
|
76
|
-
| Host file | `-f FILE[,FILE...]`, comma/space separated, disable with `-df` |
|
|
90
|
+
| Host file | `-f FILE[,FILE...]`, comma/space separated, disable with `-df`; `.txt` host list or inventory `.csv` (see *Inventory CSV import*) |
|
|
77
91
|
| CIDR network | `-n` (mask /13 … /32), comma separated |
|
|
78
92
|
| IP range | `-r`, `start-end`, comma separated |
|
|
79
93
|
|
|
@@ -85,7 +99,7 @@ expansion includes network/broadcast. Several `-f` files are combined before ded
|
|
|
85
99
|
|
|
86
100
|
### Host file format
|
|
87
101
|
|
|
88
|
-
Same parser for `-f`, `F`/ADD FILE (CLI), and web GUI ADD FILE:
|
|
102
|
+
Same parser for `-f`, `F`/ADD FILE (CLI), and web GUI ADD HOSTS FILE:
|
|
89
103
|
|
|
90
104
|
```
|
|
91
105
|
# comment to end of line
|
|
@@ -98,7 +112,7 @@ www.google.com # hostname/FQDN
|
|
|
98
112
|
2606:4700:4700::1111/128 # IPv6 with /128 - single host
|
|
99
113
|
```
|
|
100
114
|
|
|
101
|
-
Network mask range /13…/32 everywhere (host file, ADD FILE, web upload, ADD/DELETE
|
|
115
|
+
Network mask range /13…/32 everywhere (host file, ADD HOSTS FILE, web upload, ADD/DELETE
|
|
102
116
|
host input); out of range is rejected (message names the allowed range; `-f` warns and
|
|
103
117
|
ignores). IPv6: only `/128` accepted, any other mask rejected. Anything else is ignored.
|
|
104
118
|
|
|
@@ -116,12 +130,54 @@ opt: -web -port 9000
|
|
|
116
130
|
Multiple `opt:` lines join in file order. `#` comments out the rest of the line (or
|
|
117
131
|
the whole line at the start). Quote values with spaces: `opt: -f "my hosts.txt"`. A
|
|
118
132
|
flag typed on the command line wins over the same flag from a file. Only applies to
|
|
119
|
-
the initial `-f` read at startup — `F`/ADD FILE (CLI
|
|
133
|
+
the initial `-f` read at startup — `F`/ADD FILE (CLI) and ADD HOSTS FILE (web)
|
|
120
134
|
never parse `opt:` lines, they're just text.
|
|
121
135
|
|
|
136
|
+
`opt:` lines also work at the top of an inventory `.csv`. SAVE HOSTS FILE and DOWNLOAD ALL/ACTIVE HOSTS write every option that differs from the default there (start-up flags and live ADV OPTIONS changes; not `-f -df -n -r -o -up -setref -gn -cl`).
|
|
137
|
+
|
|
122
138
|
The default `eping-hosts.txt`: sample hosts, this section, then every CLI option as a
|
|
123
139
|
commented-out `opt:` line with its default (remove `# ` to activate).
|
|
124
140
|
|
|
141
|
+
## Inventory CSV import
|
|
142
|
+
|
|
143
|
+
A `.csv` inventory export (one device per row) can be used as host file: `-f FILE.csv`,
|
|
144
|
+
`F`/ADD FILE (CLI), web GUI FILE OPERATIONS > ADD HOSTS FILE (FROM CLIENT, FROM SERVER, drag and drop). Files
|
|
145
|
+
named `*.txt` are never treated as CSV - they keep the plain host file format above.
|
|
146
|
+
|
|
147
|
+
- **Detection**: first line that is not blank, a `#` comment or an `opt:` line is a header with the columns `IP Address` and
|
|
148
|
+
`Hostname` (case-insensitive); the delimiter (`;`, `,` or tab) is detected.
|
|
149
|
+
- **Columns used**: `IP Address`, `Hostname`, `Serial Number`, `Model`, `Location`,
|
|
150
|
+
`sysLocation`, `Type`, `Comment`. All other columns are ignored.
|
|
151
|
+
- **Host entry**: the `Hostname` (default; rows without an IP are pinged by name too,
|
|
152
|
+
NO-DNS if it does not resolve). A name that is not a valid hostname falls back to the
|
|
153
|
+
IP; rows without a usable entry are ignored. In the IP modes (`-ipo`, PREFER IP
|
|
154
|
+
ADDRESS, also when active while the file is added) the entry is the IP address
|
|
155
|
+
instead and rows without a valid IP are ignored. `-ph` is not needed for a CSV.
|
|
156
|
+
- **Duplicates**: one host per entry, the first row wins. The count of ignored and
|
|
157
|
+
duplicate rows is reported when the file is added (startup message / web footer).
|
|
158
|
+
- **Log**: the six inventory values and the CSV hostname are written with every row
|
|
159
|
+
of that host, see *Logging*. A `Hostname` that is not the host entry (IP mode) is
|
|
160
|
+
only kept there as information.
|
|
161
|
+
- **Filters**: `M` matches the inventory values as text, `V` / ADV FILTER selects them
|
|
162
|
+
(see *ADV FILTER*).
|
|
163
|
+
- **Save**: if the displayed hosts carry inventory values, `SAVE HOSTS FILE` writes an
|
|
164
|
+
inventory `.csv` (see *Web GUI*); plain `.txt` hosts are saved as `.txt`.
|
|
165
|
+
|
|
166
|
+
Example (`;` delimited, extra columns are ignored):
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
Hostname;IP Address;Serial Number;Model;Location;sysLocation;Type;Comment
|
|
170
|
+
sw-core-01;10.0.0.1;FOC1234A1BC;C9300-48P;Vienna DC1;Rack A3;Switch;spare PSU missing
|
|
171
|
+
sw-core-02;10.0.0.2;FOC1234A1BD;C9300-48P;Vienna DC1;Rack A4;Switch;
|
|
172
|
+
ap-lobby-01;;FCW2528P5PSV;C9120AXI-E;Graz HQ;Lobby;AP;
|
|
173
|
+
rtr-edge-01;192.0.2.10;FTX9876B2CD;ISR4331;Linz POP;Rack B1;Router;uplink to ISP
|
|
174
|
+
sw-access-01;10.0.1.1;FOC5678C3DE;C9200L-24P;Vienna DC1;Rack C1;Switch;
|
|
175
|
+
fw-edge-01;192.0.2.1;JMX2345F6GH;ASA5516;Linz POP;Rack B2;Firewall;ASA 5516 - EoL 2027
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
This gives 6 hosts, named by `Hostname`. In an IP mode it gives 5 hosts (the IP
|
|
179
|
+
addresses); `ap-lobby-01` has no IP and is ignored.
|
|
180
|
+
|
|
125
181
|
## CLI mode
|
|
126
182
|
|
|
127
183
|
Sorted table (IPv4 numerically, then hostnames), 64-column blocks. Green = UP, red =
|
|
@@ -130,7 +186,8 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
130
186
|
| Key | Action |
|
|
131
187
|
|---|---|
|
|
132
188
|
| `U` | view picker — all 9 views (see *Views and sort orders*) |
|
|
133
|
-
| `M` | match filter — regex on hostname/IP, display only (see *Match filter*) |
|
|
189
|
+
| `M` | match filter — regex on hostname/IP and inventory fields, display only (see *Match filter*) |
|
|
190
|
+
| `V` | ADV FILTER — check/uncheck Model/Location/sysLocation/Type/Comment values (show only / hide), display only (see *ADV FILTER*) |
|
|
134
191
|
| `A` | add host — IP, hostname, CIDR (/13…/32), or `ip1-ip2` (max 524288) |
|
|
135
192
|
| `D` | delete host — same formats/limits as add |
|
|
136
193
|
| `F` | add hosts from a file |
|
|
@@ -153,7 +210,7 @@ same option set as the matching web GUI dropdown.
|
|
|
153
210
|
Dialogs: ENTER confirms, ESC/empty cancels. Key bar shortens on narrow terminals.
|
|
154
211
|
`PLEASE WAIT` box with elapsed counter shown until the first round has results.
|
|
155
212
|
|
|
156
|
-
Ping checks keep running while a dialog (`A`/`D`/`F`/`M`/`T`) is open — same
|
|
213
|
+
Ping checks keep running while a dialog (`A`/`D`/`F`/`M`/`V`/`T`) is open — same
|
|
157
214
|
retry/state/logging logic as the main loop; screen repaints once the dialog closes.
|
|
158
215
|
|
|
159
216
|
Screen repaints ~7×/s independent of fping. `UP`, `SET REFERENCE`, `DEL HOST`, `ZERO
|
|
@@ -178,9 +235,9 @@ Single self-contained page, no external resources.
|
|
|
178
235
|
|
|
179
236
|
- Table: CLI-style columns, filled top-down then next column right. Horizontal scroll
|
|
180
237
|
if needed ("SCROLL RIGHT FOR MORE" hint in the stats bar).
|
|
181
|
-
- Footer stats: RUNTIME, HOST UP/DOWN/FLAPPING, for the whole current view regardless
|
|
182
|
-
of the match filter. RUNTIME shows `n/a` briefly during a background round.
|
|
183
|
-
- Adding many hosts (`ADD`,
|
|
238
|
+
- Footer stats: HOSTS, RUNTIME, HOST UP/DOWN/FLAPPING, for the whole current view regardless
|
|
239
|
+
of the match filter and the ADV FILTER (HOSTS-SHOWN = shown count). The CLI footer counts the same way. RUNTIME shows `n/a` briefly during a background round.
|
|
240
|
+
- Adding many hosts (`ADD`, ADD HOSTS FILE, upload) shows "added N host(s) - please wait,
|
|
184
241
|
pinging ..." until they appear with a state, then `done`.
|
|
185
242
|
- Font size 6–28px (slider, `A−`/`A+`, `+`/`−` keys), stored in `localStorage`.
|
|
186
243
|
- Column headers sort the list (IPv4-aware).
|
|
@@ -188,37 +245,46 @@ Single self-contained page, no external resources.
|
|
|
188
245
|
- Row 1: view select (9 views), sort order select, SET REFERENCE, ZERO CHANGES,
|
|
189
246
|
CLEAR ALL, address mode select, GET NAMES, ADV OPTIONS, RESET LOG, FILE OPERATIONS
|
|
190
247
|
select, EXIT, font size.
|
|
191
|
-
- Row 2: match filter (SET/CLEAR), host field (ADD/DELETE), comment
|
|
192
|
-
|
|
248
|
+
- Row 2: match filter (SET/CLEAR), ADV FILTER, host field (ADD/DELETE), comment
|
|
249
|
+
field (COMMENT), GENERATE REPORT select.
|
|
193
250
|
- View select, sort order select, address mode select and ADV OPTIONS all match the
|
|
194
|
-
CLI's `U`/`O`/`P`/`X` pickers exactly. FILE OPERATIONS
|
|
195
|
-
FROM SERVER
|
|
251
|
+
CLI's `U`/`O`/`P`/`X` pickers exactly. FILE OPERATIONS (incl. ADD HOSTS FILE FROM CLIENT/
|
|
252
|
+
FROM SERVER) is web-gui-only (no CLI key - CLI already runs on the server's own
|
|
196
253
|
filesystem).
|
|
197
254
|
- **FILE OPERATIONS** dropdown, in this order:
|
|
198
255
|
| Entry | Does |
|
|
199
256
|
|---|---|
|
|
200
|
-
|
|
|
257
|
+
| ADD HOSTS FILE FROM SERVER | picks one or more `.txt` files or inventory `.csv` files already on the server, adds their hosts; a `.csv` without the inventory header, e.g. an eping log, is refused |
|
|
258
|
+
| ADD HOSTS FILE FROM CLIENT | local file picker (`.txt`/`.csv`), adds the hosts; a file can also be dropped anywhere on the page |
|
|
259
|
+
| SAVE HOSTS FILE ON SERVER | confirmation, then saves the currently displayed hosts; blank name overwrites the active `-f` hostfile (first one, if eping.py was started with one) or, with none active, the default `eping-hosts.txt`; a typed name always saves as that new file instead, `.txt` appended once, active hostfile left untouched. If the displayed hosts carry inventory values (CSV import) an inventory `.csv` is written instead (`;` delimited, columns as in *Inventory CSV import*); a `.txt` name or hostfile then becomes `.csv`, the default is `eping-hosts.csv`. The options that differ from the default are written first as `opt:` lines (see *Host file format*); for a `.csv` the checkboxes `include options (opt: lines)` (default on) and `save as .txt (hosts only, no inventory)` (default off) are offered |
|
|
201
260
|
| UPLOAD FILE TO SERVER | picks a local `.txt`/`.csv`, saves as-is server-side, no host parsing; never overwrites, appends `-1`/`-2`/... |
|
|
202
|
-
| DOWNLOAD ALL HOSTS | full reference list,
|
|
203
|
-
| DOWNLOAD ACTIVE HOSTS | currently displayed hosts (view/address mode/filter applied),
|
|
261
|
+
| DOWNLOAD ALL HOSTS | full reference list: inventory `.csv` if the hosts carry inventory values, else `.txt`; non-default options first as `opt:` lines (`.csv`: checkboxes `include options`, default on, and `save as .txt`, default off) |
|
|
262
|
+
| DOWNLOAD ACTIVE HOSTS | currently displayed hosts (view/address mode/filter applied), same format and options as DOWNLOAD ALL HOSTS |
|
|
204
263
|
| DOWNLOAD ACTIVE LOGFILE | active CSV log, zipped; disabled while logging off |
|
|
205
264
|
| DOWNLOAD SELECTED FILES | picker: every `.csv`/`.txt`/`.html` in the working dir, table (name/size/date), extension filter, "select all", "no compression" checkbox (single-file selection only); multi-select bundles into one ZIP |
|
|
206
265
|
| DELETE FILES FROM SERVER | same picker as DOWNLOAD SELECTED FILES, red DELETE button, confirms with file count; active logfile can't be deleted |
|
|
207
266
|
| 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
|
-
- **ADD FILE** dropdown: `FROM CLIENT` (local file picker) / `FROM SERVER` (picks one
|
|
209
|
-
or more `.txt` files already on the server, adds their hosts).
|
|
210
267
|
- Keyboard shortcuts (no modifier, only while no text field has focus; own quick
|
|
211
268
|
variants, not the CLI's picker keys of the same letter): `U` cycles the original 3
|
|
212
269
|
views (ALL HOSTS → CURRENTLY-UP → UP+FLAPPING → ALL HOSTS), the other 6 need the
|
|
213
270
|
dropdown; `O` cycles all 5 sort orders one at a time; `P`/`I` toggle PREFER HOSTNAME /
|
|
214
271
|
SWITCH TO IP ONLY directly, the address mode select reaches all 4 modes; `G`/`S`/`Z`/
|
|
215
272
|
`C`/`L`/`E` click the matching button (`E`/`C`/`L` confirm); `A`/`D` focus host field;
|
|
216
|
-
`M`/`T` focus their field; `F` opens the
|
|
273
|
+
`M`/`T` focus their field; `V` opens ADV FILTER; `F` opens the ADD HOSTS FILE FROM CLIENT picker; `R` forces a status refresh;
|
|
217
274
|
`+`/`−` font size (works while typing). No keyboard shortcut for `X`/ADV OPTIONS or
|
|
218
275
|
GENERATE REPORT - click required.
|
|
219
276
|
- Host field feeds both ADD/DELETE; ENTER triggers the button used last, ESC clears.
|
|
220
277
|
- Files can also be dropped anywhere on the page (max 16MB, see *Host file format*).
|
|
221
278
|
- Commands acknowledge immediately; a click aborts the running round.
|
|
279
|
+
- **Host popup**: hovering a host row (after ~350 ms) shows everything known about it:
|
|
280
|
+
state, previous state, RTT, last check, changes, time in the current state, resolved/CSV
|
|
281
|
+
IP, inventory values (Model, Location, sysLocation, Type, Comment, serial) and its
|
|
282
|
+
history (last up to 50 state changes, newest first, merged with the log `COMMENT`s
|
|
283
|
+
by time). The data is fetched per host on demand (`GET /api/host`), the polled status
|
|
284
|
+
stays small. A click on the row pins the popup: the text can be selected, `COPY` copies
|
|
285
|
+
all of it, `DELETE` removes the host immediately (no confirmation; not shown in `-wv`),
|
|
286
|
+
`×`/ESC/click elsewhere closes it. The history lives in memory only; it is cleared by
|
|
287
|
+
ZERO CHANGES and CLEAR ALL.
|
|
222
288
|
|
|
223
289
|
### Views and sort orders
|
|
224
290
|
|
|
@@ -290,7 +356,8 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
290
356
|
|---|---|---|---|
|
|
291
357
|
| GET | `/` | — | the page |
|
|
292
358
|
| GET | `/api/status` | — | JSON: rows, counters, scan/phase info |
|
|
293
|
-
| GET | `/api/
|
|
359
|
+
| GET | `/api/host?name=...` | — | JSON: all known data and history of one host (mouse-over popup) |
|
|
360
|
+
| GET | `/api/logfiles` | — | JSON list of `.csv`/`.txt`/`.html` files (FILE OPERATIONS > ADD HOSTS FILE FROM SERVER) |
|
|
294
361
|
| GET | `/api/download/hosts_all` | — | full reference list, `.txt` |
|
|
295
362
|
| GET | `/api/download/hosts_shown` | — | shown hosts, `.txt` |
|
|
296
363
|
| GET | `/api/download/logfile` | — | active CSV log, zipped; `404` if logging off |
|
|
@@ -301,11 +368,14 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
301
368
|
| POST | `/api/add_from_server` | `{"names":[...]}` | add hosts from listed `.txt` files |
|
|
302
369
|
| GET | `/api/report` | — | last GENERATE REPORT HTML; `404` until done |
|
|
303
370
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
371
|
+
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
304
372
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
305
373
|
|
|
306
374
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
307
|
-
`sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
308
|
-
`set_option`, `reset_options`, `run_report`, `save_hosts_file`, `exit`. `
|
|
375
|
+
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
376
|
+
`set_option`, `reset_options`, `run_report`, `save_hosts_file`, `exit`. `adv_filter` value: JSON object `{"<field>":{"mode":"in|out","values":[...]}}` with the fields `model`,
|
|
377
|
+
`location`, `sysloc`, `type`, `comment`; `\u0001none` as value = hosts without a value; `{}` = off
|
|
378
|
+
(the old `{"<field>":"<value>"}` form is still accepted as `in` with one value). `set_option`
|
|
309
379
|
value: `key=value`. `reset_log` value: logging off - optional custom file name (blank =
|
|
310
380
|
auto-generated); logging on - `y` (clear) or `new`/`new=<name>` (new file, optional
|
|
311
381
|
custom name). `run_report`: `value` = empty (active logfile) or one `.csv` filename; or
|
|
@@ -321,7 +391,9 @@ authentication. Default bind `0.0.0.0` — use `-bind 127.0.0.1` outside trusted
|
|
|
321
391
|
1. Hostnames resolved once (32 parallel), cached around `-dns` seconds (randomized a
|
|
322
392
|
bit so a large batch resolved together doesn't all expire - and need re-resolving -
|
|
323
393
|
in the same round later). Same-address names share one probe. Unresolvable → NO-DNS,
|
|
324
|
-
no fping call. `-dns 0` = fping-side resolve.
|
|
394
|
+
no fping call. `-dns 0` = fping-side resolve. A command (filter, add, ...) cuts
|
|
395
|
+
the name resolution short as well, so it applies at once even with thousands of
|
|
396
|
+
hostnames.
|
|
325
397
|
2. UP/new hosts get full `-re` retries; confirmed-DOWN hosts get `-dr` retries. Every
|
|
326
398
|
`-fs`-th round probes everything with full retries.
|
|
327
399
|
3. Only 1/`-ds` of DOWN hosts probed per round, strided.
|
|
@@ -389,9 +461,13 @@ Hard-enforced at startup and live via ADV OPTIONS (`-web` only), same bounds.
|
|
|
389
461
|
Unless `-dl`, every round appends to `eping-log_YYYY-MM-DD_HH:MM:SS.csv` (or `-o FILE`):
|
|
390
462
|
|
|
391
463
|
```
|
|
392
|
-
TIMESTAMP,HOSTNAME,PREVIOUS_STATE,CURRENT_STATE,RTT,NO_OF_CHANGES,CHANGE_TIMESTAMP,TBD,IP
|
|
464
|
+
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
465
|
```
|
|
394
466
|
|
|
467
|
+
`INV_HOSTNAME` … `INV_COMMENT`: the inventory values of a host added from an inventory CSV (see
|
|
468
|
+
*Inventory CSV import*), empty for all other hosts. Logs without these columns (older
|
|
469
|
+
versions) stay readable by epinga.py.
|
|
470
|
+
|
|
395
471
|
`TBD`: suppressed DOWN observations (`-cf`). `IP`: address actually pinged (empty for
|
|
396
472
|
NO-DNS). Log rotates to a new file once it reaches `-lms` MB; a single round's data is
|
|
397
473
|
always written in full to one file, rotation only starts the next round in a new file.
|
|
@@ -487,7 +563,9 @@ limit shown in the modal text.
|
|
|
487
563
|
`PREFER HOSTNAME` (`-ph`): drops a raw-IP host from pinging when another entry resolves
|
|
488
564
|
to the same address. Redundancy check cached `-dns` seconds. `PREFER IP ADDRESS`: the
|
|
489
565
|
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.
|
|
566
|
+
raw-IP entry. Both non-destructive, restored by switching to another mode. Starting
|
|
567
|
+
with `-ph` resolves every hostname first (in parallel): the CLI shows a PLEASE WAIT
|
|
568
|
+
box with an elapsed counter meanwhile, the web mode a line in the terminal.
|
|
491
569
|
|
|
492
570
|
`SWITCH TO IP ONLY` (`-ipo`): resolves every hostname to its address (v4/v6 per
|
|
493
571
|
`-4`/`-6`, A preferred by default) and renames it in place (history/uptime carry over).
|
|
@@ -513,11 +591,37 @@ message shows for 3s after. Re-triggering while running shows "already running".
|
|
|
513
591
|
## Match filter
|
|
514
592
|
|
|
515
593
|
`M` (CLI) / match filter field (web): case-insensitive regex, display only, matched
|
|
516
|
-
against shown name
|
|
594
|
+
against shown name, resolved IP and the inventory fields (CSV hostname, serial
|
|
595
|
+
number, model, location, sysLocation, type, comment). Every host keeps being pinged regardless. Empty
|
|
517
596
|
value turns it off. CLI: replaces the version banner with `MATCH FILTER '<regex>'
|
|
518
597
|
active (N of M hosts shown, all still pinged)`. Invalid regex: error shown, previous
|
|
519
598
|
filter unchanged.
|
|
520
599
|
|
|
600
|
+
## ADV FILTER
|
|
601
|
+
|
|
602
|
+
Excel-style display filter on the inventory values of a CSV import (*Inventory CSV
|
|
603
|
+
import*) for `Model`, `Location`, `sysLocation`, `Type` and `Comment`. Display only -
|
|
604
|
+
every host keeps being pinged. Needs hosts with inventory values; without them the
|
|
605
|
+
dialog says so.
|
|
606
|
+
|
|
607
|
+
- **Open**: CLI `V`, web GUI button `ADV FILTER` or key `V`. A separate window; the
|
|
608
|
+
filter only changes when applied.
|
|
609
|
+
- **Per field**: check any number of values (with host count; `(empty)` = hosts without
|
|
610
|
+
a value) and choose the mode: `SHOW ONLY CHECKED` (include) or `HIDE CHECKED`
|
|
611
|
+
(exclude). Nothing checked = field not filtered.
|
|
612
|
+
- **Combination**: values within a field are ORed, fields are ANDed with each other, with
|
|
613
|
+
the match filter (`M`) and the view. The lists narrow as you select: only values still
|
|
614
|
+
possible with the other fields' selection are offered.
|
|
615
|
+
- **Web window**: one list per field with search box, `ALL`/`NONE` (act on the entries
|
|
616
|
+
matching the search), the mode toggle, APPLY, RESET ALL, CLOSE. Lists show the first
|
|
617
|
+
500 entries, the rest via search.
|
|
618
|
+
- **CLI window**: `↑`/`↓` field, ENTER opens the value list (`SPACE` check, `I` show-only/hide,
|
|
619
|
+
`A` all, `N` none, ENTER ok, ESC cancel), then `A` APPLY, `R` RESET ALL, ESC CANCEL.
|
|
620
|
+
No search in the CLI list.
|
|
621
|
+
- **Banner**: while active the CLI banner shows e.g. `ADV Type not in (Firewall, Switch)`.
|
|
622
|
+
- **Reset**: SET REFERENCE and CLEAR ALL turn the filter off. It is not saved
|
|
623
|
+
with `SAVE HOSTS FILE`.
|
|
624
|
+
|
|
521
625
|
## IPv6
|
|
522
626
|
|
|
523
627
|
IPv4/IPv6 mixed freely. Resolution follows `-4`/`-6` (preference, not restriction; A
|
|
@@ -543,7 +647,7 @@ phases: eping's own work (~0.12s on 4109 hosts).
|
|
|
543
647
|
- `-p` > 1 and `-i 0` reduce accuracy (false DOWN) — defaults avoid both.
|
|
544
648
|
- `-dr 0` produces flapping hosts in practice — keep the default of 1.
|
|
545
649
|
|
|
546
|
-
# epinga.py 2.
|
|
650
|
+
# epinga.py 2.35
|
|
547
651
|
|
|
548
652
|
Analyses an eping.py CSV log: terminal summary + self-contained HTML report (no
|
|
549
653
|
server, no external assets) with per-host detail, state-change timelines, and
|
|
@@ -593,13 +697,23 @@ Top bar: total/UP/flapping/DOWN/no-DNS/duplicate-host counts. Toolbar:
|
|
|
593
697
|
|
|
594
698
|
| Control | Does |
|
|
595
699
|
|---|---|
|
|
596
|
-
| Filter | text or regex (case-insensitive), hostname + IP; invalid regex falls back to substring |
|
|
700
|
+
| 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
701
|
| Show | restrict to one state (flapping independent of UP/DOWN/NO-DNS) |
|
|
598
702
|
| Sort | name / uptime% / avg RTT / changes; click a header, shift+click adds a tie-breaker (①②③ badge), shift+click again flips direction |
|
|
599
703
|
| IP View | toggle primary label hostname↔IP (table + buckets); independent of dedup |
|
|
600
704
|
| 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 |
|
|
705
|
+
| Reset | clears Filter, Show and the inventory drop-downs (sort, IP View and deduplication stay) |
|
|
601
706
|
| Download | saves the report exactly as shown (theme/dedup/sort/filter/collapsed state) as a standalone `.html`, client-side; hidden on `file://` |
|
|
602
707
|
|
|
708
|
+
**Inventory filters** (logs with inventory columns, see *Inventory CSV import*): to the
|
|
709
|
+
right of the top-bar counters, one drop-down each for Model, Location, sysLocation,
|
|
710
|
+
Type and Comment, listing the values found in the log with their host count (`(empty)` for hosts
|
|
711
|
+
without a value). They combine with each other and with Filter/Show and affect the
|
|
712
|
+
Host List only. A column without any value gets no drop-down; serial number and CSV
|
|
713
|
+
hostname are unique per device and searched via Filter instead. The drop-downs are
|
|
714
|
+
narrow; the one in use widens while it has focus and the others move aside. A host's detail shows
|
|
715
|
+
all inventory values, the Host List CSV download adds them as columns.
|
|
716
|
+
|
|
603
717
|
**Comments**: section above Host List from `#COMMENT#` rows, collapsed by default,
|
|
604
718
|
timestamp + text in log order. Also appear inline in a host's STATE CHANGES timeline
|
|
605
719
|
(orange, 💬 marker), HTML-escaped. Same merge in text output (`PER-HOST DETAIL`,
|