eping 3.65__tar.gz → 3.85__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.65 → eping-3.85}/PKG-INFO +95 -56
- {eping-3.65 → eping-3.85}/README.md +94 -55
- {eping-3.65 → eping-3.85}/pyproject.toml +1 -1
- {eping-3.65 → eping-3.85}/src/eping/__init__.py +0 -0
- {eping-3.65 → eping-3.85}/src/eping/_launch_eping.py +0 -0
- {eping-3.65 → eping-3.85}/src/eping/eping.py +1351 -123
- {eping-3.65 → eping-3.85}/src/eping.egg-info/PKG-INFO +95 -56
- {eping-3.65 → eping-3.85}/LICENSE +0 -0
- {eping-3.65 → eping-3.85}/setup.cfg +0 -0
- {eping-3.65 → eping-3.85}/src/eping/epinga.py +0 -0
- {eping-3.65 → eping-3.85}/src/eping.egg-info/SOURCES.txt +0 -0
- {eping-3.65 → eping-3.85}/src/eping.egg-info/dependency_links.txt +0 -0
- {eping-3.65 → eping-3.85}/src/eping.egg-info/entry_points.txt +0 -0
- {eping-3.65 → eping-3.85}/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.85
|
|
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 3.
|
|
20
|
+
# eping.py 3.85
|
|
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.
|
|
@@ -40,13 +40,24 @@ Via pip (installs `eping` and `epinga` as commands, `fping` still required separ
|
|
|
40
40
|
pip install eping
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
Standalone scripts (installs/updates `eping.py`, `epinga.py
|
|
43
|
+
Standalone scripts (installs/updates `eping.py`, `epinga.py`):
|
|
44
44
|
|
|
45
45
|
```sh
|
|
46
46
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ewaldj/eping/refs/heads/main/e-install.sh)"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
## Windows
|
|
50
|
+
|
|
51
|
+
Portable Windows version (web GUI only, no installation): download and unpack
|
|
52
|
+
[`eping-windows.zip`](https://github.com/ewaldj/eping/blob/main/Windows_Version/eping-windows.zip)
|
|
53
|
+
([folder](https://github.com/ewaldj/eping/tree/main/Windows_Version/)), then start `eping.exe`.
|
|
54
|
+
|
|
55
|
+
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI),
|
|
56
|
+
`eping.py`, `epinga.py`, `fping.exe` + `cygwin1.dll` (fping for Windows) and an embedded Python.
|
|
57
|
+
- The web GUI opens in the browser (default `http://127.0.0.1:8080`). The port is read from the hosts file
|
|
58
|
+
(`opt: -port 9000`); a port already in use is reported and can be changed in the launcher window.
|
|
59
|
+
- No terminal (curses) mode and no `-wv`/`-wvc` on Windows; log file names use `-` instead of `:`.
|
|
60
|
+
- Extra options: put them in `eping-args.txt` next to `eping.exe`. Details: `README-WINDOWS.txt` in the zip.
|
|
50
61
|
|
|
51
62
|
## Quick start
|
|
52
63
|
|
|
@@ -61,7 +72,7 @@ pip install: use `eping`/`epinga` instead of `./eping.py`/`./epinga.py` below.
|
|
|
61
72
|
./eping.py -wvc # CLI + controllable web view
|
|
62
73
|
```
|
|
63
74
|
|
|
64
|
-
No args: creates a sample `eping-hosts.txt
|
|
75
|
+
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.
|
|
65
76
|
|
|
66
77
|
### Running unattended (screen / tmux)
|
|
67
78
|
|
|
@@ -86,7 +97,7 @@ expansion includes network/broadcast. Several `-f` files are combined before ded
|
|
|
86
97
|
|
|
87
98
|
### Host file format
|
|
88
99
|
|
|
89
|
-
Same parser for `-f`, `F`/ADD FILE (CLI), and web GUI ADD FILE:
|
|
100
|
+
Same parser for `-f`, `F`/ADD FILE (CLI), and web GUI ADD HOSTS FILE:
|
|
90
101
|
|
|
91
102
|
```
|
|
92
103
|
# comment to end of line
|
|
@@ -99,7 +110,7 @@ www.google.com # hostname/FQDN
|
|
|
99
110
|
2606:4700:4700::1111/128 # IPv6 with /128 - single host
|
|
100
111
|
```
|
|
101
112
|
|
|
102
|
-
Network mask range /13…/32 everywhere (host file, ADD FILE, web upload, ADD/DELETE
|
|
113
|
+
Network mask range /13…/32 everywhere (host file, ADD HOSTS FILE, web upload, ADD/DELETE
|
|
103
114
|
host input); out of range is rejected (message names the allowed range; `-f` warns and
|
|
104
115
|
ignores). IPv6: only `/128` accepted, any other mask rejected. Anything else is ignored.
|
|
105
116
|
|
|
@@ -117,34 +128,39 @@ opt: -web -port 9000
|
|
|
117
128
|
Multiple `opt:` lines join in file order. `#` comments out the rest of the line (or
|
|
118
129
|
the whole line at the start). Quote values with spaces: `opt: -f "my hosts.txt"`. A
|
|
119
130
|
flag typed on the command line wins over the same flag from a file. Only applies to
|
|
120
|
-
the initial `-f` read at startup — `F`/ADD FILE (CLI
|
|
131
|
+
the initial `-f` read at startup — `F`/ADD FILE (CLI) and ADD HOSTS FILE (web)
|
|
121
132
|
never parse `opt:` lines, they're just text.
|
|
122
133
|
|
|
134
|
+
`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`).
|
|
135
|
+
|
|
123
136
|
The default `eping-hosts.txt`: sample hosts, this section, then every CLI option as a
|
|
124
137
|
commented-out `opt:` line with its default (remove `# ` to activate).
|
|
125
138
|
|
|
126
139
|
## Inventory CSV import
|
|
127
140
|
|
|
128
141
|
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
|
|
142
|
+
`F`/ADD FILE (CLI), web GUI FILE OPERATIONS > ADD HOSTS FILE (FROM CLIENT, FROM SERVER, drag and drop). Files
|
|
130
143
|
named `*.txt` are never treated as CSV - they keep the plain host file format above.
|
|
131
144
|
|
|
132
|
-
- **Detection**: first
|
|
145
|
+
- **Detection**: first line that is not blank, a `#` comment or an `opt:` line is a header with the columns `IP Address` and
|
|
133
146
|
`Hostname` (case-insensitive); the delimiter (`;`, `,` or tab) is detected.
|
|
134
147
|
- **Columns used**: `IP Address`, `Hostname`, `Serial Number`, `Model`, `Location`,
|
|
135
148
|
`sysLocation`, `Type`, `Comment`. All other columns are ignored.
|
|
136
|
-
- **Host entry**: the
|
|
137
|
-
|
|
138
|
-
the `
|
|
139
|
-
|
|
140
|
-
|
|
149
|
+
- **Host entry**: the `Hostname` (default; rows without an IP are pinged by name too,
|
|
150
|
+
NO-DNS if it does not resolve). A name without DNS record is pinged by the row's
|
|
151
|
+
IP instead (marked in the host popup, `-ncf` turns this off). A name that is not a valid hostname falls back to the
|
|
152
|
+
IP; rows without a usable entry are ignored. In the IP modes (`-ipo`, PREFER IP
|
|
153
|
+
ADDRESS, also when active while the file is added) the entry is the IP address
|
|
154
|
+
instead and rows without a valid IP are ignored. `-ph` is not needed for a CSV.
|
|
141
155
|
- **Duplicates**: one host per entry, the first row wins. The count of ignored and
|
|
142
156
|
duplicate rows is reported when the file is added (startup message / web footer).
|
|
143
157
|
- **Log**: the six inventory values and the CSV hostname are written with every row
|
|
144
158
|
of that host, see *Logging*. A `Hostname` that is not the host entry (IP mode) is
|
|
145
159
|
only kept there as information.
|
|
146
|
-
-
|
|
147
|
-
|
|
160
|
+
- **Filters**: `M` matches the inventory values as text, `V` / ADV FILTER selects them
|
|
161
|
+
(see *ADV FILTER*).
|
|
162
|
+
- **Save**: if the displayed hosts carry inventory values, `SAVE HOSTS FILE` writes an
|
|
163
|
+
inventory `.csv` (see *Web GUI*); plain `.txt` hosts are saved as `.txt`.
|
|
148
164
|
|
|
149
165
|
Example (`;` delimited, extra columns are ignored):
|
|
150
166
|
|
|
@@ -158,8 +174,8 @@ sw-access-01;10.0.1.1;FOC5678C3DE;C9200L-24P;Vienna DC1;Rack C1;Switch;
|
|
|
158
174
|
fw-edge-01;192.0.2.1;JMX2345F6GH;ASA5516;Linz POP;Rack B2;Firewall;ASA 5516 - EoL 2027
|
|
159
175
|
```
|
|
160
176
|
|
|
161
|
-
|
|
162
|
-
|
|
177
|
+
This gives 6 hosts, named by `Hostname`. In an IP mode it gives 5 hosts (the IP
|
|
178
|
+
addresses); `ap-lobby-01` has no IP and is ignored.
|
|
163
179
|
|
|
164
180
|
## CLI mode
|
|
165
181
|
|
|
@@ -170,6 +186,7 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
170
186
|
|---|---|
|
|
171
187
|
| `U` | view picker — all 9 views (see *Views and sort orders*) |
|
|
172
188
|
| `M` | match filter — regex on hostname/IP and inventory fields, display only (see *Match filter*) |
|
|
189
|
+
| `V` | ADV FILTER — check/uncheck Model/Location/sysLocation/Type/Comment values (show only / hide), display only (see *ADV FILTER*) |
|
|
173
190
|
| `A` | add host — IP, hostname, CIDR (/13…/32), or `ip1-ip2` (max 524288) |
|
|
174
191
|
| `D` | delete host — same formats/limits as add |
|
|
175
192
|
| `F` | add hosts from a file |
|
|
@@ -192,7 +209,7 @@ same option set as the matching web GUI dropdown.
|
|
|
192
209
|
Dialogs: ENTER confirms, ESC/empty cancels. Key bar shortens on narrow terminals.
|
|
193
210
|
`PLEASE WAIT` box with elapsed counter shown until the first round has results.
|
|
194
211
|
|
|
195
|
-
Ping checks keep running while a dialog (`A`/`D`/`F`/`M`/`T`) is open — same
|
|
212
|
+
Ping checks keep running while a dialog (`A`/`D`/`F`/`M`/`V`/`T`) is open — same
|
|
196
213
|
retry/state/logging logic as the main loop; screen repaints once the dialog closes.
|
|
197
214
|
|
|
198
215
|
Screen repaints ~7×/s independent of fping. `UP`, `SET REFERENCE`, `DEL HOST`, `ZERO
|
|
@@ -217,9 +234,9 @@ Single self-contained page, no external resources.
|
|
|
217
234
|
|
|
218
235
|
- Table: CLI-style columns, filled top-down then next column right. Horizontal scroll
|
|
219
236
|
if needed ("SCROLL RIGHT FOR MORE" hint in the stats bar).
|
|
220
|
-
- Footer stats: RUNTIME, HOST UP/DOWN/FLAPPING, for the whole current view regardless
|
|
221
|
-
of the match filter. RUNTIME shows `n/a` briefly during a background round.
|
|
222
|
-
- Adding many hosts (`ADD`,
|
|
237
|
+
- Footer stats: HOSTS, RUNTIME, HOST UP/DOWN/FLAPPING, for the whole current view regardless
|
|
238
|
+
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.
|
|
239
|
+
- Adding many hosts (`ADD`, ADD HOSTS FILE, upload) shows "added N host(s) - please wait,
|
|
223
240
|
pinging ..." until they appear with a state, then `done`.
|
|
224
241
|
- Font size 6–28px (slider, `A−`/`A+`, `+`/`−` keys), stored in `localStorage`.
|
|
225
242
|
- Column headers sort the list (IPv4-aware).
|
|
@@ -227,38 +244,46 @@ Single self-contained page, no external resources.
|
|
|
227
244
|
- Row 1: view select (9 views), sort order select, SET REFERENCE, ZERO CHANGES,
|
|
228
245
|
CLEAR ALL, address mode select, GET NAMES, ADV OPTIONS, RESET LOG, FILE OPERATIONS
|
|
229
246
|
select, EXIT, font size.
|
|
230
|
-
- Row 2: match filter (SET/CLEAR), host field (ADD/DELETE), comment
|
|
231
|
-
|
|
247
|
+
- Row 2: match filter (SET/CLEAR), ADV FILTER, host field (ADD/DELETE), comment
|
|
248
|
+
field (COMMENT), GENERATE REPORT select.
|
|
232
249
|
- View select, sort order select, address mode select and ADV OPTIONS all match the
|
|
233
|
-
CLI's `U`/`O`/`P`/`X` pickers exactly. FILE OPERATIONS
|
|
234
|
-
FROM SERVER
|
|
250
|
+
CLI's `U`/`O`/`P`/`X` pickers exactly. FILE OPERATIONS (incl. ADD HOSTS FILE FROM CLIENT/
|
|
251
|
+
FROM SERVER) is web-gui-only (no CLI key - CLI already runs on the server's own
|
|
235
252
|
filesystem).
|
|
236
253
|
- **FILE OPERATIONS** dropdown, in this order:
|
|
237
254
|
| Entry | Does |
|
|
238
255
|
|---|---|
|
|
239
|
-
|
|
|
256
|
+
| 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 |
|
|
257
|
+
| ADD HOSTS FILE FROM CLIENT | local file picker (`.txt`/`.csv`), adds the hosts; a file can also be dropped anywhere on the page |
|
|
258
|
+
| 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 |
|
|
240
259
|
| UPLOAD FILE TO SERVER | picks a local `.txt`/`.csv`, saves as-is server-side, no host parsing; never overwrites, appends `-1`/`-2`/... |
|
|
241
|
-
| DOWNLOAD ALL HOSTS | full reference list,
|
|
242
|
-
| DOWNLOAD ACTIVE HOSTS | currently displayed hosts (view/address mode/filter applied),
|
|
260
|
+
| 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) |
|
|
261
|
+
| DOWNLOAD ACTIVE HOSTS | currently displayed hosts (view/address mode/filter applied), same format and options as DOWNLOAD ALL HOSTS |
|
|
243
262
|
| DOWNLOAD ACTIVE LOGFILE | active CSV log, zipped; disabled while logging off |
|
|
244
263
|
| 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 |
|
|
245
264
|
| DELETE FILES FROM SERVER | same picker as DOWNLOAD SELECTED FILES, red DELETE button, confirms with file count; active logfile can't be deleted |
|
|
246
265
|
| 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 |
|
|
247
|
-
- **ADD FILE** dropdown: `FROM CLIENT` (local file picker) / `FROM SERVER` (picks one
|
|
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).
|
|
250
266
|
- Keyboard shortcuts (no modifier, only while no text field has focus; own quick
|
|
251
267
|
variants, not the CLI's picker keys of the same letter): `U` cycles the original 3
|
|
252
268
|
views (ALL HOSTS → CURRENTLY-UP → UP+FLAPPING → ALL HOSTS), the other 6 need the
|
|
253
269
|
dropdown; `O` cycles all 5 sort orders one at a time; `P`/`I` toggle PREFER HOSTNAME /
|
|
254
270
|
SWITCH TO IP ONLY directly, the address mode select reaches all 4 modes; `G`/`S`/`Z`/
|
|
255
271
|
`C`/`L`/`E` click the matching button (`E`/`C`/`L` confirm); `A`/`D` focus host field;
|
|
256
|
-
`M`/`T` focus their field; `F` opens the
|
|
272
|
+
`M`/`T` focus their field; `V` opens ADV FILTER; `F` opens the ADD HOSTS FILE FROM CLIENT picker; `R` forces a status refresh;
|
|
257
273
|
`+`/`−` font size (works while typing). No keyboard shortcut for `X`/ADV OPTIONS or
|
|
258
274
|
GENERATE REPORT - click required.
|
|
259
275
|
- Host field feeds both ADD/DELETE; ENTER triggers the button used last, ESC clears.
|
|
260
276
|
- Files can also be dropped anywhere on the page (max 16MB, see *Host file format*).
|
|
261
277
|
- Commands acknowledge immediately; a click aborts the running round.
|
|
278
|
+
- **Host popup**: hovering a host row (after ~350 ms) shows everything known about it:
|
|
279
|
+
state, previous state, RTT, last check, changes, time in the current state, resolved/CSV
|
|
280
|
+
IP, inventory values (Model, Location, sysLocation, Type, Comment, serial) and its
|
|
281
|
+
history (last up to 50 state changes, newest first, merged with the log `COMMENT`s
|
|
282
|
+
by time). The data is fetched per host on demand (`GET /api/host`), the polled status
|
|
283
|
+
stays small. A click on the row pins the popup: the text can be selected, `COPY` copies
|
|
284
|
+
all of it, `DELETE` removes the host immediately (no confirmation; not shown in `-wv`),
|
|
285
|
+
`×`/ESC/click elsewhere closes it. The history lives in memory only; it is cleared by
|
|
286
|
+
ZERO CHANGES and CLEAR ALL.
|
|
262
287
|
|
|
263
288
|
### Views and sort orders
|
|
264
289
|
|
|
@@ -330,7 +355,8 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
330
355
|
|---|---|---|---|
|
|
331
356
|
| GET | `/` | — | the page |
|
|
332
357
|
| GET | `/api/status` | — | JSON: rows, counters, scan/phase info |
|
|
333
|
-
| GET | `/api/
|
|
358
|
+
| GET | `/api/host?name=...` | — | JSON: all known data and history of one host (mouse-over popup) |
|
|
359
|
+
| GET | `/api/logfiles` | — | JSON list of `.csv`/`.txt`/`.html` files (FILE OPERATIONS > ADD HOSTS FILE FROM SERVER) |
|
|
334
360
|
| GET | `/api/download/hosts_all` | — | full reference list, `.txt` |
|
|
335
361
|
| GET | `/api/download/hosts_shown` | — | shown hosts, `.txt` |
|
|
336
362
|
| GET | `/api/download/logfile` | — | active CSV log, zipped; `404` if logging off |
|
|
@@ -341,11 +367,14 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
341
367
|
| POST | `/api/add_from_server` | `{"names":[...]}` | add hosts from listed `.txt` files |
|
|
342
368
|
| GET | `/api/report` | — | last GENERATE REPORT HTML; `404` until done |
|
|
343
369
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
370
|
+
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
344
371
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
345
372
|
|
|
346
373
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
347
|
-
`sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
348
|
-
`set_option`, `reset_options`, `run_report`, `save_hosts_file`, `exit`. `
|
|
374
|
+
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
375
|
+
`set_option`, `reset_options`, `run_report`, `save_hosts_file`, `exit`. `adv_filter` value: JSON object `{"<field>":{"mode":"in|out","values":[...]}}` with the fields `model`,
|
|
376
|
+
`location`, `sysloc`, `type`, `comment`; `\u0001none` as value = hosts without a value; `{}` = off
|
|
377
|
+
(the old `{"<field>":"<value>"}` form is still accepted as `in` with one value). `set_option`
|
|
349
378
|
value: `key=value`. `reset_log` value: logging off - optional custom file name (blank =
|
|
350
379
|
auto-generated); logging on - `y` (clear) or `new`/`new=<name>` (new file, optional
|
|
351
380
|
custom name). `run_report`: `value` = empty (active logfile) or one `.csv` filename; or
|
|
@@ -361,7 +390,9 @@ authentication. Default bind `0.0.0.0` — use `-bind 127.0.0.1` outside trusted
|
|
|
361
390
|
1. Hostnames resolved once (32 parallel), cached around `-dns` seconds (randomized a
|
|
362
391
|
bit so a large batch resolved together doesn't all expire - and need re-resolving -
|
|
363
392
|
in the same round later). Same-address names share one probe. Unresolvable → NO-DNS,
|
|
364
|
-
no fping call. `-dns 0` = fping-side resolve.
|
|
393
|
+
no fping call. `-dns 0` = fping-side resolve. A command (filter, add, ...) cuts
|
|
394
|
+
the name resolution short as well, so it applies at once even with thousands of
|
|
395
|
+
hostnames.
|
|
365
396
|
2. UP/new hosts get full `-re` retries; confirmed-DOWN hosts get `-dr` retries. Every
|
|
366
397
|
`-fs`-th round probes everything with full retries.
|
|
367
398
|
3. Only 1/`-ds` of DOWN hosts probed per round, strided.
|
|
@@ -403,6 +434,7 @@ separated) · `-r` IP range (comma separated, shortened end)
|
|
|
403
434
|
| `-ipo` | — | off | start with IP ONLY |
|
|
404
435
|
| `-gn` | — | off | GET NAMES once at startup |
|
|
405
436
|
| `-ncs` | — | off | skip `--check-source` |
|
|
437
|
+
| `-ncf` | — | off | CSV: do not ping the CSV IP of a name without DNS record |
|
|
406
438
|
| `-up` | — | 0 | learning phase: after N rounds keep only hosts seen UP |
|
|
407
439
|
| `-setref` | — | off | with `-up`: hosts seen UP become new reference list |
|
|
408
440
|
|
|
@@ -565,6 +597,31 @@ value turns it off. CLI: replaces the version banner with `MATCH FILTER '<regex>
|
|
|
565
597
|
active (N of M hosts shown, all still pinged)`. Invalid regex: error shown, previous
|
|
566
598
|
filter unchanged.
|
|
567
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
|
+
|
|
568
625
|
## IPv6
|
|
569
626
|
|
|
570
627
|
IPv4/IPv6 mixed freely. Resolution follows `-4`/`-6` (preference, not restriction; A
|
|
@@ -671,21 +728,3 @@ Each bucket: Download (`<base>-<up|down|flap|nodns>-hosts.txt`) + Copy (clipboar
|
|
|
671
728
|
|
|
672
729
|
Row click expands: state-change history with timestamps, per-host stats (IP, uptime,
|
|
673
730
|
downtime, span, first/last seen, RTT min/avg/max).
|
|
674
|
-
|
|
675
|
-
# esplit.py 1.14
|
|
676
|
-
|
|
677
|
-
Splits a large CSV logfile into smaller parts by size.
|
|
678
|
-
|
|
679
|
-
```sh
|
|
680
|
-
./esplit.py # interactive menu
|
|
681
|
-
./esplit.py -i eping-log_2026-09-05.csv -o parts -s 20 # ~20MB parts
|
|
682
|
-
```
|
|
683
|
-
|
|
684
|
-
| Option | Effect |
|
|
685
|
-
|---|---|
|
|
686
|
-
| `-i`, `--input FILE` | CSV file to split (omit for interactive picker) |
|
|
687
|
-
| `-o`, `--output DIR` | output folder (created if missing) |
|
|
688
|
-
| `-s`, `--size MB` | max size per part |
|
|
689
|
-
|
|
690
|
-
Each part: `part_NNN.csv`, own header row. Rows never split across parts; a
|
|
691
|
-
`#COMMENT#` row lands in whichever part it falls into.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# eping.py 3.
|
|
1
|
+
# eping.py 3.85
|
|
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.
|
|
@@ -21,13 +21,24 @@ Via pip (installs `eping` and `epinga` as commands, `fping` still required separ
|
|
|
21
21
|
pip install eping
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Standalone scripts (installs/updates `eping.py`, `epinga.py
|
|
24
|
+
Standalone scripts (installs/updates `eping.py`, `epinga.py`):
|
|
25
25
|
|
|
26
26
|
```sh
|
|
27
27
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ewaldj/eping/refs/heads/main/e-install.sh)"
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
## Windows
|
|
31
|
+
|
|
32
|
+
Portable Windows version (web GUI only, no installation): download and unpack
|
|
33
|
+
[`eping-windows.zip`](https://github.com/ewaldj/eping/blob/main/Windows_Version/eping-windows.zip)
|
|
34
|
+
([folder](https://github.com/ewaldj/eping/tree/main/Windows_Version/)), then start `eping.exe`.
|
|
35
|
+
|
|
36
|
+
- Contains `eping.exe` (small launcher window: web port, Start / Stop / Restart, open web GUI),
|
|
37
|
+
`eping.py`, `epinga.py`, `fping.exe` + `cygwin1.dll` (fping for Windows) and an embedded Python.
|
|
38
|
+
- The web GUI opens in the browser (default `http://127.0.0.1:8080`). The port is read from the hosts file
|
|
39
|
+
(`opt: -port 9000`); a port already in use is reported and can be changed in the launcher window.
|
|
40
|
+
- No terminal (curses) mode and no `-wv`/`-wvc` on Windows; log file names use `-` instead of `:`.
|
|
41
|
+
- Extra options: put them in `eping-args.txt` next to `eping.exe`. Details: `README-WINDOWS.txt` in the zip.
|
|
31
42
|
|
|
32
43
|
## Quick start
|
|
33
44
|
|
|
@@ -42,7 +53,7 @@ pip install: use `eping`/`epinga` instead of `./eping.py`/`./epinga.py` below.
|
|
|
42
53
|
./eping.py -wvc # CLI + controllable web view
|
|
43
54
|
```
|
|
44
55
|
|
|
45
|
-
No args: creates a sample `eping-hosts.txt
|
|
56
|
+
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.
|
|
46
57
|
|
|
47
58
|
### Running unattended (screen / tmux)
|
|
48
59
|
|
|
@@ -67,7 +78,7 @@ expansion includes network/broadcast. Several `-f` files are combined before ded
|
|
|
67
78
|
|
|
68
79
|
### Host file format
|
|
69
80
|
|
|
70
|
-
Same parser for `-f`, `F`/ADD FILE (CLI), and web GUI ADD FILE:
|
|
81
|
+
Same parser for `-f`, `F`/ADD FILE (CLI), and web GUI ADD HOSTS FILE:
|
|
71
82
|
|
|
72
83
|
```
|
|
73
84
|
# comment to end of line
|
|
@@ -80,7 +91,7 @@ www.google.com # hostname/FQDN
|
|
|
80
91
|
2606:4700:4700::1111/128 # IPv6 with /128 - single host
|
|
81
92
|
```
|
|
82
93
|
|
|
83
|
-
Network mask range /13…/32 everywhere (host file, ADD FILE, web upload, ADD/DELETE
|
|
94
|
+
Network mask range /13…/32 everywhere (host file, ADD HOSTS FILE, web upload, ADD/DELETE
|
|
84
95
|
host input); out of range is rejected (message names the allowed range; `-f` warns and
|
|
85
96
|
ignores). IPv6: only `/128` accepted, any other mask rejected. Anything else is ignored.
|
|
86
97
|
|
|
@@ -98,34 +109,39 @@ opt: -web -port 9000
|
|
|
98
109
|
Multiple `opt:` lines join in file order. `#` comments out the rest of the line (or
|
|
99
110
|
the whole line at the start). Quote values with spaces: `opt: -f "my hosts.txt"`. A
|
|
100
111
|
flag typed on the command line wins over the same flag from a file. Only applies to
|
|
101
|
-
the initial `-f` read at startup — `F`/ADD FILE (CLI
|
|
112
|
+
the initial `-f` read at startup — `F`/ADD FILE (CLI) and ADD HOSTS FILE (web)
|
|
102
113
|
never parse `opt:` lines, they're just text.
|
|
103
114
|
|
|
115
|
+
`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`).
|
|
116
|
+
|
|
104
117
|
The default `eping-hosts.txt`: sample hosts, this section, then every CLI option as a
|
|
105
118
|
commented-out `opt:` line with its default (remove `# ` to activate).
|
|
106
119
|
|
|
107
120
|
## Inventory CSV import
|
|
108
121
|
|
|
109
122
|
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
|
|
123
|
+
`F`/ADD FILE (CLI), web GUI FILE OPERATIONS > ADD HOSTS FILE (FROM CLIENT, FROM SERVER, drag and drop). Files
|
|
111
124
|
named `*.txt` are never treated as CSV - they keep the plain host file format above.
|
|
112
125
|
|
|
113
|
-
- **Detection**: first
|
|
126
|
+
- **Detection**: first line that is not blank, a `#` comment or an `opt:` line is a header with the columns `IP Address` and
|
|
114
127
|
`Hostname` (case-insensitive); the delimiter (`;`, `,` or tab) is detected.
|
|
115
128
|
- **Columns used**: `IP Address`, `Hostname`, `Serial Number`, `Model`, `Location`,
|
|
116
129
|
`sysLocation`, `Type`, `Comment`. All other columns are ignored.
|
|
117
|
-
- **Host entry**: the
|
|
118
|
-
|
|
119
|
-
the `
|
|
120
|
-
|
|
121
|
-
|
|
130
|
+
- **Host entry**: the `Hostname` (default; rows without an IP are pinged by name too,
|
|
131
|
+
NO-DNS if it does not resolve). A name without DNS record is pinged by the row's
|
|
132
|
+
IP instead (marked in the host popup, `-ncf` turns this off). A name that is not a valid hostname falls back to the
|
|
133
|
+
IP; rows without a usable entry are ignored. In the IP modes (`-ipo`, PREFER IP
|
|
134
|
+
ADDRESS, also when active while the file is added) the entry is the IP address
|
|
135
|
+
instead and rows without a valid IP are ignored. `-ph` is not needed for a CSV.
|
|
122
136
|
- **Duplicates**: one host per entry, the first row wins. The count of ignored and
|
|
123
137
|
duplicate rows is reported when the file is added (startup message / web footer).
|
|
124
138
|
- **Log**: the six inventory values and the CSV hostname are written with every row
|
|
125
139
|
of that host, see *Logging*. A `Hostname` that is not the host entry (IP mode) is
|
|
126
140
|
only kept there as information.
|
|
127
|
-
-
|
|
128
|
-
|
|
141
|
+
- **Filters**: `M` matches the inventory values as text, `V` / ADV FILTER selects them
|
|
142
|
+
(see *ADV FILTER*).
|
|
143
|
+
- **Save**: if the displayed hosts carry inventory values, `SAVE HOSTS FILE` writes an
|
|
144
|
+
inventory `.csv` (see *Web GUI*); plain `.txt` hosts are saved as `.txt`.
|
|
129
145
|
|
|
130
146
|
Example (`;` delimited, extra columns are ignored):
|
|
131
147
|
|
|
@@ -139,8 +155,8 @@ sw-access-01;10.0.1.1;FOC5678C3DE;C9200L-24P;Vienna DC1;Rack C1;Switch;
|
|
|
139
155
|
fw-edge-01;192.0.2.1;JMX2345F6GH;ASA5516;Linz POP;Rack B2;Firewall;ASA 5516 - EoL 2027
|
|
140
156
|
```
|
|
141
157
|
|
|
142
|
-
|
|
143
|
-
|
|
158
|
+
This gives 6 hosts, named by `Hostname`. In an IP mode it gives 5 hosts (the IP
|
|
159
|
+
addresses); `ap-lobby-01` has no IP and is ignored.
|
|
144
160
|
|
|
145
161
|
## CLI mode
|
|
146
162
|
|
|
@@ -151,6 +167,7 @@ DOWN. Columns: hostname/IP, state, RTT (ms), last-change timestamp, change count
|
|
|
151
167
|
|---|---|
|
|
152
168
|
| `U` | view picker — all 9 views (see *Views and sort orders*) |
|
|
153
169
|
| `M` | match filter — regex on hostname/IP and inventory fields, display only (see *Match filter*) |
|
|
170
|
+
| `V` | ADV FILTER — check/uncheck Model/Location/sysLocation/Type/Comment values (show only / hide), display only (see *ADV FILTER*) |
|
|
154
171
|
| `A` | add host — IP, hostname, CIDR (/13…/32), or `ip1-ip2` (max 524288) |
|
|
155
172
|
| `D` | delete host — same formats/limits as add |
|
|
156
173
|
| `F` | add hosts from a file |
|
|
@@ -173,7 +190,7 @@ same option set as the matching web GUI dropdown.
|
|
|
173
190
|
Dialogs: ENTER confirms, ESC/empty cancels. Key bar shortens on narrow terminals.
|
|
174
191
|
`PLEASE WAIT` box with elapsed counter shown until the first round has results.
|
|
175
192
|
|
|
176
|
-
Ping checks keep running while a dialog (`A`/`D`/`F`/`M`/`T`) is open — same
|
|
193
|
+
Ping checks keep running while a dialog (`A`/`D`/`F`/`M`/`V`/`T`) is open — same
|
|
177
194
|
retry/state/logging logic as the main loop; screen repaints once the dialog closes.
|
|
178
195
|
|
|
179
196
|
Screen repaints ~7×/s independent of fping. `UP`, `SET REFERENCE`, `DEL HOST`, `ZERO
|
|
@@ -198,9 +215,9 @@ Single self-contained page, no external resources.
|
|
|
198
215
|
|
|
199
216
|
- Table: CLI-style columns, filled top-down then next column right. Horizontal scroll
|
|
200
217
|
if needed ("SCROLL RIGHT FOR MORE" hint in the stats bar).
|
|
201
|
-
- Footer stats: RUNTIME, HOST UP/DOWN/FLAPPING, for the whole current view regardless
|
|
202
|
-
of the match filter. RUNTIME shows `n/a` briefly during a background round.
|
|
203
|
-
- Adding many hosts (`ADD`,
|
|
218
|
+
- Footer stats: HOSTS, RUNTIME, HOST UP/DOWN/FLAPPING, for the whole current view regardless
|
|
219
|
+
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.
|
|
220
|
+
- Adding many hosts (`ADD`, ADD HOSTS FILE, upload) shows "added N host(s) - please wait,
|
|
204
221
|
pinging ..." until they appear with a state, then `done`.
|
|
205
222
|
- Font size 6–28px (slider, `A−`/`A+`, `+`/`−` keys), stored in `localStorage`.
|
|
206
223
|
- Column headers sort the list (IPv4-aware).
|
|
@@ -208,38 +225,46 @@ Single self-contained page, no external resources.
|
|
|
208
225
|
- Row 1: view select (9 views), sort order select, SET REFERENCE, ZERO CHANGES,
|
|
209
226
|
CLEAR ALL, address mode select, GET NAMES, ADV OPTIONS, RESET LOG, FILE OPERATIONS
|
|
210
227
|
select, EXIT, font size.
|
|
211
|
-
- Row 2: match filter (SET/CLEAR), host field (ADD/DELETE), comment
|
|
212
|
-
|
|
228
|
+
- Row 2: match filter (SET/CLEAR), ADV FILTER, host field (ADD/DELETE), comment
|
|
229
|
+
field (COMMENT), GENERATE REPORT select.
|
|
213
230
|
- View select, sort order select, address mode select and ADV OPTIONS all match the
|
|
214
|
-
CLI's `U`/`O`/`P`/`X` pickers exactly. FILE OPERATIONS
|
|
215
|
-
FROM SERVER
|
|
231
|
+
CLI's `U`/`O`/`P`/`X` pickers exactly. FILE OPERATIONS (incl. ADD HOSTS FILE FROM CLIENT/
|
|
232
|
+
FROM SERVER) is web-gui-only (no CLI key - CLI already runs on the server's own
|
|
216
233
|
filesystem).
|
|
217
234
|
- **FILE OPERATIONS** dropdown, in this order:
|
|
218
235
|
| Entry | Does |
|
|
219
236
|
|---|---|
|
|
220
|
-
|
|
|
237
|
+
| 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 |
|
|
238
|
+
| ADD HOSTS FILE FROM CLIENT | local file picker (`.txt`/`.csv`), adds the hosts; a file can also be dropped anywhere on the page |
|
|
239
|
+
| 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 |
|
|
221
240
|
| UPLOAD FILE TO SERVER | picks a local `.txt`/`.csv`, saves as-is server-side, no host parsing; never overwrites, appends `-1`/`-2`/... |
|
|
222
|
-
| DOWNLOAD ALL HOSTS | full reference list,
|
|
223
|
-
| DOWNLOAD ACTIVE HOSTS | currently displayed hosts (view/address mode/filter applied),
|
|
241
|
+
| 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) |
|
|
242
|
+
| DOWNLOAD ACTIVE HOSTS | currently displayed hosts (view/address mode/filter applied), same format and options as DOWNLOAD ALL HOSTS |
|
|
224
243
|
| DOWNLOAD ACTIVE LOGFILE | active CSV log, zipped; disabled while logging off |
|
|
225
244
|
| 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 |
|
|
226
245
|
| DELETE FILES FROM SERVER | same picker as DOWNLOAD SELECTED FILES, red DELETE button, confirms with file count; active logfile can't be deleted |
|
|
227
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 |
|
|
228
|
-
- **ADD FILE** dropdown: `FROM CLIENT` (local file picker) / `FROM SERVER` (picks one
|
|
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).
|
|
231
247
|
- Keyboard shortcuts (no modifier, only while no text field has focus; own quick
|
|
232
248
|
variants, not the CLI's picker keys of the same letter): `U` cycles the original 3
|
|
233
249
|
views (ALL HOSTS → CURRENTLY-UP → UP+FLAPPING → ALL HOSTS), the other 6 need the
|
|
234
250
|
dropdown; `O` cycles all 5 sort orders one at a time; `P`/`I` toggle PREFER HOSTNAME /
|
|
235
251
|
SWITCH TO IP ONLY directly, the address mode select reaches all 4 modes; `G`/`S`/`Z`/
|
|
236
252
|
`C`/`L`/`E` click the matching button (`E`/`C`/`L` confirm); `A`/`D` focus host field;
|
|
237
|
-
`M`/`T` focus their field; `F` opens the
|
|
253
|
+
`M`/`T` focus their field; `V` opens ADV FILTER; `F` opens the ADD HOSTS FILE FROM CLIENT picker; `R` forces a status refresh;
|
|
238
254
|
`+`/`−` font size (works while typing). No keyboard shortcut for `X`/ADV OPTIONS or
|
|
239
255
|
GENERATE REPORT - click required.
|
|
240
256
|
- Host field feeds both ADD/DELETE; ENTER triggers the button used last, ESC clears.
|
|
241
257
|
- Files can also be dropped anywhere on the page (max 16MB, see *Host file format*).
|
|
242
258
|
- Commands acknowledge immediately; a click aborts the running round.
|
|
259
|
+
- **Host popup**: hovering a host row (after ~350 ms) shows everything known about it:
|
|
260
|
+
state, previous state, RTT, last check, changes, time in the current state, resolved/CSV
|
|
261
|
+
IP, inventory values (Model, Location, sysLocation, Type, Comment, serial) and its
|
|
262
|
+
history (last up to 50 state changes, newest first, merged with the log `COMMENT`s
|
|
263
|
+
by time). The data is fetched per host on demand (`GET /api/host`), the polled status
|
|
264
|
+
stays small. A click on the row pins the popup: the text can be selected, `COPY` copies
|
|
265
|
+
all of it, `DELETE` removes the host immediately (no confirmation; not shown in `-wv`),
|
|
266
|
+
`×`/ESC/click elsewhere closes it. The history lives in memory only; it is cleared by
|
|
267
|
+
ZERO CHANGES and CLEAR ALL.
|
|
243
268
|
|
|
244
269
|
### Views and sort orders
|
|
245
270
|
|
|
@@ -311,7 +336,8 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
311
336
|
|---|---|---|---|
|
|
312
337
|
| GET | `/` | — | the page |
|
|
313
338
|
| GET | `/api/status` | — | JSON: rows, counters, scan/phase info |
|
|
314
|
-
| GET | `/api/
|
|
339
|
+
| GET | `/api/host?name=...` | — | JSON: all known data and history of one host (mouse-over popup) |
|
|
340
|
+
| GET | `/api/logfiles` | — | JSON list of `.csv`/`.txt`/`.html` files (FILE OPERATIONS > ADD HOSTS FILE FROM SERVER) |
|
|
315
341
|
| GET | `/api/download/hosts_all` | — | full reference list, `.txt` |
|
|
316
342
|
| GET | `/api/download/hosts_shown` | — | shown hosts, `.txt` |
|
|
317
343
|
| GET | `/api/download/logfile` | — | active CSV log, zipped; `404` if logging off |
|
|
@@ -322,11 +348,14 @@ Same bounds as the matching CLI flags (`-lms`/`-lmf` for the last two - see *Out
|
|
|
322
348
|
| POST | `/api/add_from_server` | `{"names":[...]}` | add hosts from listed `.txt` files |
|
|
323
349
|
| GET | `/api/report` | — | last GENERATE REPORT HTML; `404` until done |
|
|
324
350
|
| POST | `/api/command` | `{"cmd":"...","value":"..."}` | control (see cmd list below) |
|
|
351
|
+
| POST | `/api/advvalues` | `{"filter":{...}}` | ADV FILTER: values still selectable for a draft selection (same format as `adv_filter`) |
|
|
325
352
|
| POST | `/api/upload` | host list, text | add hosts |
|
|
326
353
|
|
|
327
354
|
`cmd` values: `up_only`, `set_filter`, `addr_mode`, `get_names`, `match_filter`,
|
|
328
|
-
`sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
329
|
-
`set_option`, `reset_options`, `run_report`, `save_hosts_file`, `exit`. `
|
|
355
|
+
`adv_filter`, `sort`, `add`, `del`, `set_ref`, `zero`, `add_comment`, `reset_log`, `clear`,
|
|
356
|
+
`set_option`, `reset_options`, `run_report`, `save_hosts_file`, `exit`. `adv_filter` value: JSON object `{"<field>":{"mode":"in|out","values":[...]}}` with the fields `model`,
|
|
357
|
+
`location`, `sysloc`, `type`, `comment`; `\u0001none` as value = hosts without a value; `{}` = off
|
|
358
|
+
(the old `{"<field>":"<value>"}` form is still accepted as `in` with one value). `set_option`
|
|
330
359
|
value: `key=value`. `reset_log` value: logging off - optional custom file name (blank =
|
|
331
360
|
auto-generated); logging on - `y` (clear) or `new`/`new=<name>` (new file, optional
|
|
332
361
|
custom name). `run_report`: `value` = empty (active logfile) or one `.csv` filename; or
|
|
@@ -342,7 +371,9 @@ authentication. Default bind `0.0.0.0` — use `-bind 127.0.0.1` outside trusted
|
|
|
342
371
|
1. Hostnames resolved once (32 parallel), cached around `-dns` seconds (randomized a
|
|
343
372
|
bit so a large batch resolved together doesn't all expire - and need re-resolving -
|
|
344
373
|
in the same round later). Same-address names share one probe. Unresolvable → NO-DNS,
|
|
345
|
-
no fping call. `-dns 0` = fping-side resolve.
|
|
374
|
+
no fping call. `-dns 0` = fping-side resolve. A command (filter, add, ...) cuts
|
|
375
|
+
the name resolution short as well, so it applies at once even with thousands of
|
|
376
|
+
hostnames.
|
|
346
377
|
2. UP/new hosts get full `-re` retries; confirmed-DOWN hosts get `-dr` retries. Every
|
|
347
378
|
`-fs`-th round probes everything with full retries.
|
|
348
379
|
3. Only 1/`-ds` of DOWN hosts probed per round, strided.
|
|
@@ -384,6 +415,7 @@ separated) · `-r` IP range (comma separated, shortened end)
|
|
|
384
415
|
| `-ipo` | — | off | start with IP ONLY |
|
|
385
416
|
| `-gn` | — | off | GET NAMES once at startup |
|
|
386
417
|
| `-ncs` | — | off | skip `--check-source` |
|
|
418
|
+
| `-ncf` | — | off | CSV: do not ping the CSV IP of a name without DNS record |
|
|
387
419
|
| `-up` | — | 0 | learning phase: after N rounds keep only hosts seen UP |
|
|
388
420
|
| `-setref` | — | off | with `-up`: hosts seen UP become new reference list |
|
|
389
421
|
|
|
@@ -546,6 +578,31 @@ value turns it off. CLI: replaces the version banner with `MATCH FILTER '<regex>
|
|
|
546
578
|
active (N of M hosts shown, all still pinged)`. Invalid regex: error shown, previous
|
|
547
579
|
filter unchanged.
|
|
548
580
|
|
|
581
|
+
## ADV FILTER
|
|
582
|
+
|
|
583
|
+
Excel-style display filter on the inventory values of a CSV import (*Inventory CSV
|
|
584
|
+
import*) for `Model`, `Location`, `sysLocation`, `Type` and `Comment`. Display only -
|
|
585
|
+
every host keeps being pinged. Needs hosts with inventory values; without them the
|
|
586
|
+
dialog says so.
|
|
587
|
+
|
|
588
|
+
- **Open**: CLI `V`, web GUI button `ADV FILTER` or key `V`. A separate window; the
|
|
589
|
+
filter only changes when applied.
|
|
590
|
+
- **Per field**: check any number of values (with host count; `(empty)` = hosts without
|
|
591
|
+
a value) and choose the mode: `SHOW ONLY CHECKED` (include) or `HIDE CHECKED`
|
|
592
|
+
(exclude). Nothing checked = field not filtered.
|
|
593
|
+
- **Combination**: values within a field are ORed, fields are ANDed with each other, with
|
|
594
|
+
the match filter (`M`) and the view. The lists narrow as you select: only values still
|
|
595
|
+
possible with the other fields' selection are offered.
|
|
596
|
+
- **Web window**: one list per field with search box, `ALL`/`NONE` (act on the entries
|
|
597
|
+
matching the search), the mode toggle, APPLY, RESET ALL, CLOSE. Lists show the first
|
|
598
|
+
500 entries, the rest via search.
|
|
599
|
+
- **CLI window**: `↑`/`↓` field, ENTER opens the value list (`SPACE` check, `I` show-only/hide,
|
|
600
|
+
`A` all, `N` none, ENTER ok, ESC cancel), then `A` APPLY, `R` RESET ALL, ESC CANCEL.
|
|
601
|
+
No search in the CLI list.
|
|
602
|
+
- **Banner**: while active the CLI banner shows e.g. `ADV Type not in (Firewall, Switch)`.
|
|
603
|
+
- **Reset**: SET REFERENCE and CLEAR ALL turn the filter off. It is not saved
|
|
604
|
+
with `SAVE HOSTS FILE`.
|
|
605
|
+
|
|
549
606
|
## IPv6
|
|
550
607
|
|
|
551
608
|
IPv4/IPv6 mixed freely. Resolution follows `-4`/`-6` (preference, not restriction; A
|
|
@@ -652,21 +709,3 @@ Each bucket: Download (`<base>-<up|down|flap|nodns>-hosts.txt`) + Copy (clipboar
|
|
|
652
709
|
|
|
653
710
|
Row click expands: state-change history with timestamps, per-host stats (IP, uptime,
|
|
654
711
|
downtime, span, first/last seen, RTT min/avg/max).
|
|
655
|
-
|
|
656
|
-
# esplit.py 1.14
|
|
657
|
-
|
|
658
|
-
Splits a large CSV logfile into smaller parts by size.
|
|
659
|
-
|
|
660
|
-
```sh
|
|
661
|
-
./esplit.py # interactive menu
|
|
662
|
-
./esplit.py -i eping-log_2026-09-05.csv -o parts -s 20 # ~20MB parts
|
|
663
|
-
```
|
|
664
|
-
|
|
665
|
-
| Option | Effect |
|
|
666
|
-
|---|---|
|
|
667
|
-
| `-i`, `--input FILE` | CSV file to split (omit for interactive picker) |
|
|
668
|
-
| `-o`, `--output DIR` | output folder (created if missing) |
|
|
669
|
-
| `-s`, `--size MB` | max size per part |
|
|
670
|
-
|
|
671
|
-
Each part: `part_NNN.csv`, own header row. Rows never split across parts; a
|
|
672
|
-
`#COMMENT#` row lands in whichever part it falls into.
|