eping 3.60__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eping
3
- Version: 3.60
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.8
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.60
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 hosts).
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 and resolved IP. Every host keeps being pinged regardless. Empty
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.27
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.60
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 hosts).
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 and resolved IP. Every host keeps being pinged regardless. Empty
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.27
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.60"
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.8"
12
+ requires-python = ">=3.6"
13
13
  classifiers = [
14
14
  "Environment :: Console :: Curses",
15
15
  "Intended Audience :: System Administrators",