ipmg 1.0.2__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.
- ipmg-1.0.2/LICENSE +21 -0
- ipmg-1.0.2/PKG-INFO +348 -0
- ipmg-1.0.2/README.md +329 -0
- ipmg-1.0.2/pyproject.toml +56 -0
- ipmg-1.0.2/setup.cfg +4 -0
- ipmg-1.0.2/src/ipmg/__init__.py +15 -0
- ipmg-1.0.2/src/ipmg/discover.py +18 -0
- ipmg-1.0.2/src/ipmg/io_handlers.py +28 -0
- ipmg-1.0.2/src/ipmg/main.py +119 -0
- ipmg-1.0.2/src/ipmg/ping.py +65 -0
- ipmg-1.0.2/src/ipmg/reporting.py +39 -0
- ipmg-1.0.2/src/ipmg/security.py +28 -0
- ipmg-1.0.2/src/ipmg/utils.py +52 -0
- ipmg-1.0.2/src/ipmg.egg-info/PKG-INFO +348 -0
- ipmg-1.0.2/src/ipmg.egg-info/SOURCES.txt +20 -0
- ipmg-1.0.2/src/ipmg.egg-info/dependency_links.txt +1 -0
- ipmg-1.0.2/src/ipmg.egg-info/entry_points.txt +2 -0
- ipmg-1.0.2/src/ipmg.egg-info/requires.txt +9 -0
- ipmg-1.0.2/src/ipmg.egg-info/top_level.txt +1 -0
- ipmg-1.0.2/tests/test_discover.py +14 -0
- ipmg-1.0.2/tests/test_ping.py +11 -0
- ipmg-1.0.2/tests/test_utils.py +21 -0
ipmg-1.0.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 SAMEER ALAM
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
ipmg-1.0.2/PKG-INFO
ADDED
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ipmg
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: IP Management & Ping Monitoring CLI Tool
|
|
5
|
+
Author: Sameer Alam
|
|
6
|
+
License: MIT
|
|
7
|
+
Requires-Python: >=3.8
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: pandas
|
|
11
|
+
Requires-Dist: tqdm
|
|
12
|
+
Requires-Dist: openpyxl
|
|
13
|
+
Requires-Dist: rich
|
|
14
|
+
Provides-Extra: dev
|
|
15
|
+
Requires-Dist: pytest; extra == "dev"
|
|
16
|
+
Requires-Dist: black; extra == "dev"
|
|
17
|
+
Requires-Dist: ruff; extra == "dev"
|
|
18
|
+
Dynamic: license-file
|
|
19
|
+
|
|
20
|
+
# IPMG — IP Management & Ping Monitoring Tool
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+

|
|
24
|
+

|
|
25
|
+

|
|
26
|
+

|
|
27
|
+

|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
**IPMG (IP Management Tool)** is a modern, modular, enterprise-ready network scanner and monitoring utility.
|
|
32
|
+
It replaces the legacy `ip_pinger.py` script with a **clean package architecture**, CLI tooling, and automated workflows.
|
|
33
|
+
|
|
34
|
+
Designed for:
|
|
35
|
+
|
|
36
|
+
- Network administrators
|
|
37
|
+
- Systems engineers
|
|
38
|
+
- Cybersecurity teams
|
|
39
|
+
- DevOps and SREs
|
|
40
|
+
|
|
41
|
+
IPMG supports:
|
|
42
|
+
|
|
43
|
+
- **Subnet auto-discovery**
|
|
44
|
+
- **Parallel pinging with thread pools**
|
|
45
|
+
- **Hostname resolution**
|
|
46
|
+
- **Multi-format reporting (XLSX/CSV/JSON)**
|
|
47
|
+
- **Scheduled recurrent scans**
|
|
48
|
+
- **Auto-generated sample Excel input**
|
|
49
|
+
- **Colorized CLI output**
|
|
50
|
+
- **Modular testable architecture**
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## ⚠️ Security Disclaimer
|
|
55
|
+
|
|
56
|
+
> **Do NOT use this tool on networks without explicit authorization.**
|
|
57
|
+
> Always obtain written approval from your organization's **Cybersecurity / Network Security team**.
|
|
58
|
+
> Unauthorized scanning may violate internal policies or law.
|
|
59
|
+
|
|
60
|
+
IPMG includes a built-in disclaimer shown at runtime (`security.py`).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
# Features
|
|
65
|
+
|
|
66
|
+
### ✔ Modular Python package (`src/ipmg`)
|
|
67
|
+
|
|
68
|
+
Not a single script anymore — now a clean, testable package.
|
|
69
|
+
|
|
70
|
+
### ✔ CLI Command: `ipmg`
|
|
71
|
+
|
|
72
|
+
Installed system-wide or via uv.
|
|
73
|
+
|
|
74
|
+
### ✔ Auto Subnet Discovery
|
|
75
|
+
|
|
76
|
+
Scan your `/24` instantly:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
ipmg --discover
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### ✔ Multi-threaded high performance
|
|
83
|
+
|
|
84
|
+
Scans hundreds of hosts in seconds.
|
|
85
|
+
|
|
86
|
+
### ✔ Auto Sample Excel Generation
|
|
87
|
+
|
|
88
|
+
If the input file is missing:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
ip_list.xlsx
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
is created automatically.
|
|
95
|
+
|
|
96
|
+
### ✔ Supports multiple output formats
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
--formats xlsx csv json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### ✔ Hostname resolution
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
--resolve
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### ✔ Scheduled scanning
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
--interval 5
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Runs every 5 minutes.
|
|
115
|
+
|
|
116
|
+
### ✔ Fully tested (pytest) + formatted (ruff/black)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
# Installation
|
|
121
|
+
|
|
122
|
+
## Option 1 — Install via uv (recommended)
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
uv tool install git+https://github.com/sameeralam3127/ipmg.git
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Test:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
ipmg --help
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Option 2 — Install via pip (editable, dev mode)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git clone https://github.com/sameeralam3127/ipmg.git
|
|
140
|
+
cd IP_Management
|
|
141
|
+
|
|
142
|
+
pip install -e .
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Now:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
ipmg --help
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Option 3 — Install using curl installer
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
curl -sSL https://raw.githubusercontent.com/sameeralam3127/ipmg/main/install.sh | bash
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
This script:
|
|
160
|
+
|
|
161
|
+
- Installs uv if missing
|
|
162
|
+
- Installs ipmg globally into uv
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
# Usage
|
|
167
|
+
|
|
168
|
+
### Help
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
ipmg --help
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Basic Example (using default input)
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
ipmg
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
If `ip_list.xlsx` does not exist → it will be created with sample IPs.
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Scan a custom input file
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
ipmg --input network_devices.xlsx
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Auto-discover LAN subnet
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
ipmg --discover
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Export results to CSV + XLSX
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
ipmg --formats csv xlsx
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Resolve hostnames (PTR)
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
ipmg --resolve
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Run every 10 minutes
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
ipmg --interval 10
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
# Testing
|
|
227
|
+
|
|
228
|
+
Run all tests:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
uv run pytest
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
# Formatting & Linting
|
|
237
|
+
|
|
238
|
+
### Ruff (lint + autofix)
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
uv run ruff check . --fix
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Ruff formatter (PEP-style formatting)
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
uv run ruff format .
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Black (formatter)
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
uv run black .
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
# Pre-commit Hooks (auto-format on commit)
|
|
259
|
+
|
|
260
|
+
Install:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
uv run pre-commit install
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Run manually:
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
uv run pre-commit run --all-files
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
# Sample Output Summary
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
=== IPMG Summary ===
|
|
278
|
+
Active: 132
|
|
279
|
+
Inactive: 12
|
|
280
|
+
Unreachable: 4
|
|
281
|
+
Timeout: 2
|
|
282
|
+
|
|
283
|
+
Success Rate: 88.00%
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
# Input File Format (Excel or CSV)
|
|
289
|
+
|
|
290
|
+
Example:
|
|
291
|
+
|
|
292
|
+
| IP Address |
|
|
293
|
+
| ----------- |
|
|
294
|
+
| 192.168.1.1 |
|
|
295
|
+
| 10.0.0.1 |
|
|
296
|
+
| 8.8.8.8 |
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
# Output File Format
|
|
301
|
+
|
|
302
|
+
| IP Address | Status | Latency | Hostname | Timestamp |
|
|
303
|
+
| ---------- | ------ | ------- | ---------- | ------------------- |
|
|
304
|
+
| 8.8.8.8 | Active | 12.5 ms | dns.google | 2025-10-12 18:40:15 |
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
# Troubleshooting
|
|
309
|
+
|
|
310
|
+
### **Command not found: ipmg**
|
|
311
|
+
|
|
312
|
+
Solution:
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
pip install -e .
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### **Permission denied output folder**
|
|
319
|
+
|
|
320
|
+
Run inside a writeable directory or use:
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
sudo ipmg ...
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### **Hostname Unresolvable**
|
|
327
|
+
|
|
328
|
+
Likely missing DNS PTR records.
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
# macOS GUI (PingMonitorApp – Beta)
|
|
333
|
+
|
|
334
|
+
A native macOS interface for IPMG is under active development.
|
|
335
|
+
|
|
336
|
+
Download Beta:
|
|
337
|
+
|
|
338
|
+
👉 [https://github.com/sameeralam3127/IP_Management/releases/tag/macOS](https://github.com/sameeralam3127/IP_Management/releases/tag/macOS)
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
# License
|
|
343
|
+
|
|
344
|
+
MIT License — free for commercial and personal use.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
Made with ❤️ using Python & uv.
|
ipmg-1.0.2/README.md
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# IPMG — IP Management & Ping Monitoring Tool
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
**IPMG (IP Management Tool)** is a modern, modular, enterprise-ready network scanner and monitoring utility.
|
|
13
|
+
It replaces the legacy `ip_pinger.py` script with a **clean package architecture**, CLI tooling, and automated workflows.
|
|
14
|
+
|
|
15
|
+
Designed for:
|
|
16
|
+
|
|
17
|
+
- Network administrators
|
|
18
|
+
- Systems engineers
|
|
19
|
+
- Cybersecurity teams
|
|
20
|
+
- DevOps and SREs
|
|
21
|
+
|
|
22
|
+
IPMG supports:
|
|
23
|
+
|
|
24
|
+
- **Subnet auto-discovery**
|
|
25
|
+
- **Parallel pinging with thread pools**
|
|
26
|
+
- **Hostname resolution**
|
|
27
|
+
- **Multi-format reporting (XLSX/CSV/JSON)**
|
|
28
|
+
- **Scheduled recurrent scans**
|
|
29
|
+
- **Auto-generated sample Excel input**
|
|
30
|
+
- **Colorized CLI output**
|
|
31
|
+
- **Modular testable architecture**
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ⚠️ Security Disclaimer
|
|
36
|
+
|
|
37
|
+
> **Do NOT use this tool on networks without explicit authorization.**
|
|
38
|
+
> Always obtain written approval from your organization's **Cybersecurity / Network Security team**.
|
|
39
|
+
> Unauthorized scanning may violate internal policies or law.
|
|
40
|
+
|
|
41
|
+
IPMG includes a built-in disclaimer shown at runtime (`security.py`).
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
# Features
|
|
46
|
+
|
|
47
|
+
### ✔ Modular Python package (`src/ipmg`)
|
|
48
|
+
|
|
49
|
+
Not a single script anymore — now a clean, testable package.
|
|
50
|
+
|
|
51
|
+
### ✔ CLI Command: `ipmg`
|
|
52
|
+
|
|
53
|
+
Installed system-wide or via uv.
|
|
54
|
+
|
|
55
|
+
### ✔ Auto Subnet Discovery
|
|
56
|
+
|
|
57
|
+
Scan your `/24` instantly:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
ipmg --discover
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### ✔ Multi-threaded high performance
|
|
64
|
+
|
|
65
|
+
Scans hundreds of hosts in seconds.
|
|
66
|
+
|
|
67
|
+
### ✔ Auto Sample Excel Generation
|
|
68
|
+
|
|
69
|
+
If the input file is missing:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
ip_list.xlsx
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
is created automatically.
|
|
76
|
+
|
|
77
|
+
### ✔ Supports multiple output formats
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
--formats xlsx csv json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### ✔ Hostname resolution
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
--resolve
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### ✔ Scheduled scanning
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
--interval 5
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Runs every 5 minutes.
|
|
96
|
+
|
|
97
|
+
### ✔ Fully tested (pytest) + formatted (ruff/black)
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
# Installation
|
|
102
|
+
|
|
103
|
+
## Option 1 — Install via uv (recommended)
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
uv tool install git+https://github.com/sameeralam3127/ipmg.git
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Test:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
ipmg --help
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Option 2 — Install via pip (editable, dev mode)
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
git clone https://github.com/sameeralam3127/ipmg.git
|
|
121
|
+
cd IP_Management
|
|
122
|
+
|
|
123
|
+
pip install -e .
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Now:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
ipmg --help
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Option 3 — Install using curl installer
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
curl -sSL https://raw.githubusercontent.com/sameeralam3127/ipmg/main/install.sh | bash
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
This script:
|
|
141
|
+
|
|
142
|
+
- Installs uv if missing
|
|
143
|
+
- Installs ipmg globally into uv
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
# Usage
|
|
148
|
+
|
|
149
|
+
### Help
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
ipmg --help
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Basic Example (using default input)
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
ipmg
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
If `ip_list.xlsx` does not exist → it will be created with sample IPs.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Scan a custom input file
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
ipmg --input network_devices.xlsx
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Auto-discover LAN subnet
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
ipmg --discover
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Export results to CSV + XLSX
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
ipmg --formats csv xlsx
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Resolve hostnames (PTR)
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
ipmg --resolve
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Run every 10 minutes
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
ipmg --interval 10
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
# Testing
|
|
208
|
+
|
|
209
|
+
Run all tests:
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
uv run pytest
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
# Formatting & Linting
|
|
218
|
+
|
|
219
|
+
### Ruff (lint + autofix)
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
uv run ruff check . --fix
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Ruff formatter (PEP-style formatting)
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
uv run ruff format .
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Black (formatter)
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
uv run black .
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
# Pre-commit Hooks (auto-format on commit)
|
|
240
|
+
|
|
241
|
+
Install:
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
uv run pre-commit install
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Run manually:
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
uv run pre-commit run --all-files
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
# Sample Output Summary
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
=== IPMG Summary ===
|
|
259
|
+
Active: 132
|
|
260
|
+
Inactive: 12
|
|
261
|
+
Unreachable: 4
|
|
262
|
+
Timeout: 2
|
|
263
|
+
|
|
264
|
+
Success Rate: 88.00%
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
# Input File Format (Excel or CSV)
|
|
270
|
+
|
|
271
|
+
Example:
|
|
272
|
+
|
|
273
|
+
| IP Address |
|
|
274
|
+
| ----------- |
|
|
275
|
+
| 192.168.1.1 |
|
|
276
|
+
| 10.0.0.1 |
|
|
277
|
+
| 8.8.8.8 |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
# Output File Format
|
|
282
|
+
|
|
283
|
+
| IP Address | Status | Latency | Hostname | Timestamp |
|
|
284
|
+
| ---------- | ------ | ------- | ---------- | ------------------- |
|
|
285
|
+
| 8.8.8.8 | Active | 12.5 ms | dns.google | 2025-10-12 18:40:15 |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
# Troubleshooting
|
|
290
|
+
|
|
291
|
+
### **Command not found: ipmg**
|
|
292
|
+
|
|
293
|
+
Solution:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
pip install -e .
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### **Permission denied output folder**
|
|
300
|
+
|
|
301
|
+
Run inside a writeable directory or use:
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
sudo ipmg ...
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### **Hostname Unresolvable**
|
|
308
|
+
|
|
309
|
+
Likely missing DNS PTR records.
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
# macOS GUI (PingMonitorApp – Beta)
|
|
314
|
+
|
|
315
|
+
A native macOS interface for IPMG is under active development.
|
|
316
|
+
|
|
317
|
+
Download Beta:
|
|
318
|
+
|
|
319
|
+
👉 [https://github.com/sameeralam3127/IP_Management/releases/tag/macOS](https://github.com/sameeralam3127/IP_Management/releases/tag/macOS)
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
# License
|
|
324
|
+
|
|
325
|
+
MIT License — free for commercial and personal use.
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
Made with ❤️ using Python & uv.
|