IPMG — IP Management & Ping Monitoring Tool
Scan and monitor IP networks from the command line. IPMG pings hosts in parallel, resolves hostnames, and exports results as Excel, CSV, JSON, or Markdown reports.
Security note: only scan networks you are authorized to scan. Unauthorized scanning may violate your organization's policies or the law.
Install
pip install ipmg
Check that it works:
ipmg --version
Other install methods
uv (isolated global install):
uv tool install git+https://github.com/sameeralam3127/ipmg.git
curl installer (installs uv if missing):
curl -sSL https://raw.githubusercontent.com/sameeralam3127/ipmg/main/install.sh | bash
From source (development):
git clone https://github.com/sameeralam3127/ipmg.git
cd ipmg
pip install -e .
Quick start
# Scan your local subnet automatically
ipmg --discover
# Scan a single host
ipmg --input 8.8.8.8
# Scan a CIDR range
ipmg --input 192.168.1.0/24
# Scan targets from a file (xlsx, csv, txt, or list)
ipmg --input targets.txt
# Resolve hostnames and export CSV + a readable Markdown report
ipmg --input targets.txt --resolve --formats md csv
Running plain ipmg uses ip_list.xlsx as input and creates a sample file
if it does not exist.
Options
| Flag | Default | Description |
|---|---|---|
--input |
ip_list.xlsx |
Targets: a file (.xlsx, .xls, .csv, .txt, .list), a single IP, or a CIDR block |
--output |
results |
Output file name prefix |
--formats |
xlsx |
One or more of xlsx, csv, json, md |
--discover |
off | Auto-detect and scan the local subnet |
--resolve |
off | Reverse DNS (PTR) lookup for each host |
--dns-cache-ttl |
300 |
Cache DNS results for this many seconds (0 disables caching) |
--timeout |
2 |
Ping timeout in seconds |
--count |
1 |
Pings per host |
--threads |
50 |
Parallel workers |
--interval |
off | Repeat the scan every N minutes |
--verbose |
off | Debug logging |
Input formats
-
Excel / CSV — must contain an
IP Addresscolumn:IP Address 192.168.1.1 10.0.1.0/30 -
Text file — one IP or CIDR per line; blank lines and
#comments are ignored:# Production DNS 8.8.8.8 192.168.1.0/30
-
Command line — a literal IP (
8.8.8.8) or CIDR block (10.0.0.0/24)
Output
Every scan prints a color-coded summary and writes result files
(e.g. results_20260628_120000.xlsx). Each row includes:
| IP Address | Status | Latency | Hostname | Batch Timestamp | Scan Duration (s) |
|---|---|---|---|---|---|
| 8.8.8.8 | Active | 12.5 | dns.google | 2026-04-09 11:42:13 | 6.24 |
Status values: Active, Inactive, Timeout, Unreachable, Invalid IP, Error.
The md format produces a shareable Markdown report with a status summary
table — handy for tickets, handoffs, and incident timelines.
Troubleshooting
command not found: ipmg— make sure pip's script directory is on yourPATH, or reinstall withpip install ipmg.- Hostname shows
Unresolvable— the host has no DNS PTR record. - Input file rejected — check the extension is supported and that
spreadsheets/CSVs include an
IP Addresscolumn.
Development
pip install -e ".[dev]"
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 pytest -q
Releases are automated: merging a conventional commit (feat: ...,
fix: ...) to main triggers GitHub Actions to run tests, create a
semantic-release tag, and publish to PyPI.
License
MIT — free for commercial and personal use.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ipmg-1.4.0.tar.gz.
File metadata
- Download URL: ipmg-1.4.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6730c8831e7fe3dd4bb898da5d9b74f10265d40dbba138c5b6ececd58a1281e7
|
|
| MD5 |
23f96ff3f776b48e4b15b2547a7c5e5e
|
|
| BLAKE2b-256 |
6adcef29adce11c8a7886825d7fbb63e81a51470c15f915852812aade2c3dd1a
|
Provenance
The following attestation bundles were made for ipmg-1.4.0.tar.gz:
Publisher:
publish.yml on sameeralam3127/ipmg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ipmg-1.4.0.tar.gz -
Subject digest:
6730c8831e7fe3dd4bb898da5d9b74f10265d40dbba138c5b6ececd58a1281e7 - Sigstore transparency entry: 2164578213
- Sigstore integration time:
-
Permalink:
sameeralam3127/ipmg@f2df9cd6f76aa674529546e024cd282416e719d2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/sameeralam3127
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f2df9cd6f76aa674529546e024cd282416e719d2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ipmg-1.4.0-py3-none-any.whl.
File metadata
- Download URL: ipmg-1.4.0-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0808f47aed25a055cdf71985d8b2bce74e2b6244a756913ebba02599b8d1e230
|
|
| MD5 |
9ba98b9e34eecdfa675f80b168973e3c
|
|
| BLAKE2b-256 |
e38d89b00109effe3f99d70f2d7fc368b2df0ea2be464c1fcbad8024b46d3ef0
|
Provenance
The following attestation bundles were made for ipmg-1.4.0-py3-none-any.whl:
Publisher:
publish.yml on sameeralam3127/ipmg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ipmg-1.4.0-py3-none-any.whl -
Subject digest:
0808f47aed25a055cdf71985d8b2bce74e2b6244a756913ebba02599b8d1e230 - Sigstore transparency entry: 2164578236
- Sigstore integration time:
-
Permalink:
sameeralam3127/ipmg@f2df9cd6f76aa674529546e024cd282416e719d2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/sameeralam3127
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f2df9cd6f76aa674529546e024cd282416e719d2 -
Trigger Event:
push
-
Statement type: