IPMG
Open source · MIT licensed

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

IPMG scans hosts in parallel, finds the ones that block ping, checks web services, identifies devices by name and MAC address, remembers every scan, and tells you what moved. Run it from the terminal, or from IPMG Web, a private dashboard your whole team can open.

uv tool install "ipmg[web]"
  • Python 3.10 – 3.14
  • Linux · macOS · Windows
  • No root required
65,536hosts in a single scan
5report formats
17kinds 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 IPMG Web.

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.

Find hosts that block ping

--probe icmp,tcp tries a TCP connection when ping gets no answer, and --scan-ports lists the services listening on every host.

Reports people can read

Excel, CSV, JSON, JSON Lines, or Markdown, written while the scan runs, so an interrupted scan keeps its results and can be resumed.

IPMG Web for the whole team

ipmg web --lan prints the link to share and the firewall step. Live scans, history, changes, inventory, and scheduled scans, fully offline.

Check services and network gear

--http-check catches failing web services and expiring certificates; --snmp asks switches and routers for their uptime and interfaces, and alerts when one reboots or an uplink goes down.

Know every device

--mac adds each host's MAC address and vendor on your LAN, spots devices that moved IP, and ipmg wake wakes them.

Automate it

Slack, Teams, webhook, and email alerts, exit codes for cron and CI, a GitHub Action, systemd and launchd templates, and Prometheus metrics.

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 9 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

    • critical
      HTTP check failing

      A checked URL that passed now fails

    • 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 or MAC address moved to a different IP

    • warning
      MAC address changed

      A different device answers at the same IP

    • warning
      HTTP status changed

      A checked URL answers differently

    • warning
      Status changed

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

    • warning
      Device rebooted

      A switch or router's uptime started again (--snmp)

    • warning
      Interface down

      An enabled interface that was up stopped passing traffic

    • warning
      SNMP not answering

      The device answers the scan, but its agent stopped answering

    • 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)

    • info
      HTTP check recovered

      A failing check passes again

    • info
      Interface back up

      An interface that went down is up again

    • info
      SNMP answering again

      The device's agent answers again

    IPMG Web

    Prefer clicking? Same engine, in your browser.

    ipmg web starts a private server with live progress, scan history, change reports, a host inventory with Wake-on-LAN, and scheduled scans. ipmg web --lan lets your team open it: it prints the link with this machine's address and tells you if the firewall is in the way. 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 five Python versions, three operating systems, and nine Linux distributions, then released automatically to PyPI and as a Docker image.

    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?

    Yes: create a schedule in IPMG Web, run --interval 5 to repeat a scan every five minutes, or use the systemd and launchd templates. For cron and CI, --fail-on-down exits with code 3 when hosts are down, and ipmg diff --fail-on-change exits with code 2 when anything changed.

    Every host comes back as Timeout. Why?

    Something is dropping ICMP — a host firewall, a VPN, or a cloud security group. Add --probe icmp,tcp so hosts that block ping are found by a TCP connection instead.

    Can my team open IPMG Web?

    Yes: ipmg web --lan prints the link to share. Every request needs the access token in that link, and every response carries a strict Content-Security-Policy. It speaks plain HTTP, so on a network you don't trust use an SSH tunnel or a reverse proxy with TLS.

    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.