Skip to main content

======================================================================= 🌐 UbuntuWebServer - Flask Network Scanner

A modern, lightweight network device scanner built with Flask and Python. Detects all devices on your local network (IP, MAC, hostname, vendor, OS) and provides a clean, auto-refreshing web UI. Optional cron-based deep scans and tagging/notes for known hosts.


✅ PROJECT GOAL

Create a web-based dashboard that:

  • Scans LAN for connected devices (IP, MAC, Hostname, Vendor, OS)
  • Stores and displays known devices in a SQLite database
  • Provides an editable UI for tagging/notes
  • Supports automated OS scanning and refresh via cron
  • Can run persistently with systemd or a background process

🛠 TOOLS & TECHNOLOGIES

Task Tool
Web Server Flask (Apache2 optional)
Backend Python 3.10+
Network Scanning nmap, mac-vendor-lookup
Frontend UI HTML/CSS, Bootstrap
Database Storage SQLite
Scheduling cron (Linux/macOS)
Startup Service systemd (Linux)

🧱 ARCHITECTURE OVERVIEW

[ Ubuntu Server / Windows / Mac ] | [ Flask App - app.py ] | [ nmap scan → parsed into DB ] | [ SQLite + MAC Vendor DB ] | [ Auto-refresh Web UI /cron ]


🧪 INSTALLATION INSTRUCTIONS

  1. Clone and Set Up Environment

git clone https://github.com/tjohnsonII/UbuntuWebServer.git cd UbuntuWebServer python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

  1. Install System Dependencies (Linux/macOS)

sudo apt update sudo apt install nmap sqlite3 -y

  1. Initialize the Database

bash init_db.sh

  1. Run the Web App

bash run_flask.sh

Then open in browser: http://:5000


🔁 GITHUB SYNC & AUTO RESTART

To sync latest updates from GitHub and restart Flask: bash sync_from_github.sh


🔂 AUTOMATE DEEP OS SCANNING

To install cron job that scans every 30 minutes: bash install_cron.sh

This creates: */30 * * * * /usr/bin/python3 /home//UbuntuWebServer/deep_scan.py


🚀 ENABLE ON BOOT (systemd)

sudo cp flaskscanner.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable flaskscanner sudo systemctl start flaskscanner


🧾 ADD / EDIT KNOWN HOSTS

Run this to insert devices with notes: python insert_known_host.py

Prompts for:

  • MAC
  • IP
  • Hostname
  • Vendor
  • OS
  • Notes

📂 PROJECT LAYOUT

File/Folder Purpose
ubuntuwebserver/app.py Flask scanner logic
deep_scan.py OS detection w/ cron
insert_known_host.py CLI insert known devices
init_db.py SQLite DB init
templates/scan_results.html Auto-refresh UI
known_hosts.db Local device info
sync_to_github.sh Push latest code
sync_from_github.sh Pull + restart
run_flask.sh Run web server
start-networkscanner.sh Smart launch script
flask.log / app_errors.log Logging

🌐 WEB UI FEATURES

  • Auto-refresh every 15 seconds
  • Search/filter by IP, MAC, hostname, vendor
  • Bootstrap responsive design
  • Color-coded vendor badges
  • OS detection support
  • Notes/comments per device

🛠 CROSS-PLATFORM NOTES

✔ Linux - Full support (cron, systemd, bash) ✔ macOS - Supported with brew install nmap sqlite3 ✔ Windows - Use Git Bash or WSL + Python 3.10+ - Adjust paths in bash scripts as needed - Flask auto-refresh supported


🩺 TROUBLESHOOTING

  • Port 5000 busy? Run: lsof -i :5000 or sudo fuser -k 5000/tcp
  • nmap not found? Run: sudo apt install nmap
  • Python error? Verify Python 3.10+ and correct venv
  • No output? Check scan logs in flask.log or run scanScript.py

⚠️ SECURITY WARNING

This tool is for private/internal LANs only. Do NOT expose to the public internet. There is no built-in authentication or encryption. Use firewalls, VPN, or nginx basic auth if needed.


📄 LICENSE

MIT License © 2025 Timothy Johnson II


🙋 AUTHOR

Timothy Johnson II Hosted PBX Engineer, 123NET GitHub: https://github.com/tjohnsonII

Metadata

Release files for ubuntuwebscanner 1.0.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ubuntuwebscanner 1.0.19
File Size Uploaded
ubuntuwebscanner-1.0.19.tar.gz 88.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ubuntuwebscanner 1.0.19
File Interpreter ABI Platform
ubuntuwebscanner-1.0.19-py3-none-any.whl Python 3 none any Details

Total release size: 107.6 kB

Release files / ubuntuwebscanner-1.0.19.tar.gz

Download URL ubuntuwebscanner-1.0.19.tar.gz
Size 88.8 kB
Tags Source
SHA-256 checksum
How to use checksums
090f16fdf82bc4737a6d11f0079c048fdb26b4ee0c4d0c75ccbe9cdf550475ad
BLAKE2b-256 checksum
How to use checksums
f8728ad07ec79485dd08b1ad829c7eadcb1700ae943492b8adeb14e00c8a3b85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / ubuntuwebscanner-1.0.19-py3-none-any.whl

Download URL ubuntuwebscanner-1.0.19-py3-none-any.whl
Size 18.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f3879e5a2bb4213882908fce2fc6f9182678c0844ac593fae95e388508315db
BLAKE2b-256 checksum
How to use checksums
385dc3aa869930a623b8b19e86e06ce00ff9ea1cc8db4d4dc6001e3ea03b4596
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

1.0.19 This release

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page