vlan-probe
VLAN Isolation & Network Permission Probe Tool — standalone project extracted from the Ansible role in ansible-home-baseline.
vlan-probe is a command-line tool. Install it with pipx
so it runs in an isolated environment and the vlan-probe command is available
on your PATH.
Requirements
- Python 3.10 or newer
Installation
Install with pipx (recommended)
pipx install vlan-probe
Upgrade to a newer release:
pipx upgrade vlan-probe
If you do not already have pipx, install it first (macOS/Homebrew, Debian/Ubuntu or Arch examples; see the pipx docs for other systems):
brew install pipx && pipx ensurepath
# or
apt install pipx && pipx ensurepath
# or
pacman -S python-pipx && pipx ensurepath
Install from source
# with pipx
pipx install .
# with uv (alternative)
uv tool install .
# or install directly into your environment
pip install .
Usage
- Install or copy to a host.
- Create a TOML config at
/etc/vlan_probe.tomlor pass-cto point to a different file. - Run
vlan-probe -f tableorpython -m vlan_probe -f table.
Configuration
Configuration uses TOML format for easy human readability and simplicity:
[[targets]]
name = "Internal - Device A SSH"
vlan = "Internal"
ip = "192.168.1.10"
port = 22
protocol = "tcp"
expected_blocked = true
[[targets]]
name = "Internal - Gateway HTTP"
vlan = "Internal"
ip = "192.168.2.1"
port = 80
protocol = "tcp"
expected_blocked = true
[[targets]]
name = "External - Public DNS"
vlan = "External"
ip = "8.8.8.8"
port = 53
protocol = "udp"
expected_blocked = false
Options
-c, --config PATH Path to config TOML file (default: /etc/vlan_probe.toml)
-f, --format FORMAT Output format: ndjson, json, or table (default: ndjson)
-t, --timeout SECONDS Socket connection timeout (default: 2.0)
-s, --strict Exit with code 1 if any violations occur
--color [auto|always|never] Colorize output (default: auto)
Examples
# Display as table
vlan-probe -c ./vlan_probe.toml -f table
# Output JSON
vlan-probe -f json
# Strict mode with custom timeout
vlan-probe -s -t 5.0
# No color output
vlan-probe -f table --color never
Development
uv sync # install dev dependencies
uv run pytest # run tests
uv run ruff check . && uv run ruff format --check . # lint
uv run mypy src # type check
License
MIT (see LICENSE)
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 vlan_probe-0.1.0.tar.gz.
File metadata
- Download URL: vlan_probe-0.1.0.tar.gz
- Upload date:
- Size: 54.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
334140a8414fdc285d9b29807485cd970a2fc02e1fbc3ca81e4784d8dc860cb0
|
|
| MD5 |
1a8ca78814c467358c9db30bb8bcd165
|
|
| BLAKE2b-256 |
9fdb5464c755d4dee7581e69786216894cc448f736fe1213b87af87898498326
|
Provenance
The following attestation bundles were made for vlan_probe-0.1.0.tar.gz:
Publisher:
ci.yml on hellqvio86/vlan-probe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vlan_probe-0.1.0.tar.gz -
Subject digest:
334140a8414fdc285d9b29807485cd970a2fc02e1fbc3ca81e4784d8dc860cb0 - Sigstore transparency entry: 2473713761
- Sigstore integration time:
-
Permalink:
hellqvio86/vlan-probe@85471a3dd0602c2993004aecff3c612d8537d4f9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hellqvio86
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@85471a3dd0602c2993004aecff3c612d8537d4f9 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vlan_probe-0.1.0-py3-none-any.whl.
File metadata
- Download URL: vlan_probe-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0464d40874092d19e023573b11c3174c2377677f989baa7680a3592f89ed2da1
|
|
| MD5 |
dd1b977cc4861ecdc41be2c2dbadf707
|
|
| BLAKE2b-256 |
391baee1b448475efe9e190924b25ab997edf90dcb782c585f3d22b7fb97ca85
|
Provenance
The following attestation bundles were made for vlan_probe-0.1.0-py3-none-any.whl:
Publisher:
ci.yml on hellqvio86/vlan-probe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vlan_probe-0.1.0-py3-none-any.whl -
Subject digest:
0464d40874092d19e023573b11c3174c2377677f989baa7680a3592f89ed2da1 - Sigstore transparency entry: 2473713804
- Sigstore integration time:
-
Permalink:
hellqvio86/vlan-probe@85471a3dd0602c2993004aecff3c612d8537d4f9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hellqvio86
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@85471a3dd0602c2993004aecff3c612d8537d4f9 -
Trigger Event:
workflow_dispatch
-
Statement type: