Get notified for new devices on your network. This app runs nmap periodically and saves found hosts, and send you a notification whenever a new device (mac-address) is found.
- A notification service supported by Apprise and the required API keys or other configuration for your chosen services
- Have
nmapalready installed on your system
Install Requirements:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt Upgrade Dependencies:
pip install pipreqs pip install --upgrade -r requirements.txt pipreqs --force --ignore .venv - If you have Python installed, you can clone the repository and directly run the Python file
- You can download the latest release artifact from GitHub Releases
- If you have Docker installed, you can run the Docker image
You can configure Net-Mon using environment variables or command-line arguments.
- Apprise configuration url, for your chosen providers:
NETMON_NOTIFICATION=tgram://bottoken/ChatID
- Subnet for scanning in CIDR form or range form:
NETMON_SUBNET=192.168.1.0/24orNETMON_SUBNET=192.168.1.1-100
- Interval for scanning, in minutes:
NETMON_MINUTES=15
- Results file path (optional, default is
results.json):NETMON_RESULTS=results.json
You can also pass these options directly when running the app:
--notificationNotification URL (e.g.--notification tgram://bottoken/ChatID)--subnetSubnet to scan (e.g.--subnet 192.168.1.0/24)--minutesScan interval in minutes (e.g.--minutes 15)--resultsResults file path (default:results.json)
- Python:
sudo python app.py --notification tgram://bottoken/ChatID - Executable:
sudo ./netmon --notification tgram://bottoken/ChatID - Docker:
docker run -e \ NETMON_NOTIFICATION=tgram://bottoken/ChatID \ NETMON_SUBNET=192.168.1.0/24 \ NETMON_MINUTES=15 \ --net=host \ ghcr.io/rafhaanshah/net-mon:latest
- Docker-Compose:
services: net-mon: container_name: net-mon image: ghcr.io/rafhaanshah/net-mon:latest restart: unless-stopped network_mode: host # needed for nmap to get mac addresses volumes: - ./results.json:/app/results.json # optional, if you want to keep found hosts persistent # create an empty results.json first environment: - NETMON_NOTIFICATION=tgram://bottoken/ChatID - NETMON_SUBNET=192.168.1.0/24 - NETMON_MINUTES=60
