IPMG
Open source · MIT licensed

Know which hosts are up — and what changed since last time.

IPMG pings hosts in parallel, resolves their names, remembers every scan, and tells you what moved. Run it from the terminal or from a private dashboard on your own machine.

uv tool install ipmg
  • Python 3.9 – 3.14
  • Linux · macOS · Windows
  • No root required
65,536hosts in a single scan
4report formats
8kinds of change detected
0CDN assets — works offline

Features

Everything you need to answer “what's on this network?”

One tool for the quick check and the scheduled audit — the same engine powers the CLI and the dashboard.

Scan anything you can name

A single IP, a CIDR block, a range, or a text, CSV, or Excel file. --discover finds the network you're on and scans it.

Watch results arrive

--stream prints each host the moment it answers, above a live progress bar — and writes clean lines when piped to a log.

Spot what changed

Every scan is kept in local SQLite. --compare and ipmg diff report outages, new hosts, and moved names.

See listening services

--scan-ports checks SSH, HTTP, HTTPS, RDP, SMB, databases, and more on every host that answers — or the ports you choose.

Reports people can read

Excel, CSV, JSON, or Markdown, one row per host. Spreadsheet formulas in exported values are neutralized.

A private local dashboard

ipmg dashboard serves live monitoring, history, and inventory on 127.0.0.1 — fully offline, nothing uploaded.

Install

Up and running in under a minute

The installer brings its own Python through uv, so your system Python doesn't matter — it works on RHEL 8 and on images with no Python at all.

IPMG uses your system's ping. Minimal Linux images may need it: sudo apt-get install -y iputils-ping (or dnf, zypper, apk).

curl -sSL https://raw.githubusercontent.com/sameeralam3127/ipmg/main/install.sh | bash

On a minimal server or container, add -s -- --with-deps after bash to install curl, tar, gzip, and ping too.

Then check it works: ipmg --version

Command builder

Build any command, copy it

Pick a command and what you want to know. Every flag is explained, so the command you copy is one you understand. Prefer to read? Every command is also in the command reference.

Command
What to scan
What to find out
Reports
Speed
More options
Your command
ipmg --input 192.168.1.0/24 --stream

    Change detection

    The question you actually have: what moved?

    IPMG compares a scan with the previous scan of the same targets and ranks every difference. Latency only counts when it clears both an absolute and a relative threshold, so normal jitter stays out of the report.

    ipmg diff                    # two latest scans
    ipmg diff 12 14              # two specific scans
    ipmg diff --fail-on-change   # exit 2 for cron or CI
    • critical
      Host offline

      Reachable in the baseline, not reachable now

    • warning
      New host

      An IP address the baseline never saw

    • warning
      Host removed

      An IP the current scan no longer covers

    • warning
      IP address changed

      A known hostname moved to a different IP

    • warning
      Service changed

      Status moved between failure modes, e.g. Timeout → Unreachable

    • info
      Host back online

      Recovered since the baseline

    • info
      Hostname changed

      Same IP, different PTR record

    • info
      Latency changed

      Moved past both thresholds (5 ms and 25% by default)

    Dashboard

    Prefer clicking? Same engine, in your browser.

    ipmg dashboard starts a private server on 127.0.0.1:8080 with live progress over WebSockets, scan history, change reports, and a host inventory. The demo below runs entirely in your browser with sample data.

    127.0.0.1:8080 sample data

    Releases

    Shipped recently

    Every merge to main is tested on six Python versions and three operating systems, then released automatically to PyPI.

    FAQ

    Good questions

    More answers in the FAQ and the troubleshooting guide.

    Do I need root or administrator rights?

    No. IPMG runs the same ping command you would run by hand — no raw sockets, no special capabilities.

    Does it change anything on the hosts it scans?

    No. It sends ICMP echo requests, and with --scan-ports it opens and immediately closes TCP connections. Nothing is written and nothing logs in.

    Where does my scan history live?

    In ~/.ipmg/dashboard.db, on your machine only. Point it elsewhere with --db, or skip storing a scan with --no-history.

    Can I run it on a schedule?

    --interval 5 repeats a scan every five minutes. For unattended runs, use cron or a systemd timer with --compare, then ipmg diff --fail-on-change so a change shows up as exit code 2.

    Every host comes back as Timeout. Why?

    Something is dropping ICMP — a host firewall, a VPN, or a cloud security group. Try ping by hand against one address: if that fails too, it's the network, not IPMG.

    Is the dashboard safe to expose?

    It binds to 127.0.0.1 and has no authentication by design. To reach it from another machine, use an SSH tunnel, or put an authenticating reverse proxy in front of it.

    Scan your first network.

    ipmg --discover

    Only scan networks you are authorized to scan. Unauthorized scanning may violate your organization's policies or the law.