Export Nessus vulnerability scan results to Excel (.xlsx) and native .nessus format. Uses Selenium + Chrome to access the Nessus web portal at https://127.0.0.1:8834, logs in via the browser UI, exports the scan using the built-in Export button, scrapes the vulnerability table to match the exact count shown in the UI, and produces colour-coded Excel + .nessus files. USE FOR: export nessus vulnerabilities, nessus scan to excel, nessus report export, download nessus results, vulnerability export, nessus to xlsx, nessus scan report, get nessus vulnerabilities.
Export vulnerability scan results from the local Nessus portal (https://127.0.0.1:8834) to Excel and .nessus format files using Chrome browser automation.
Load and follow this skill when the user asks to:
Before running, verify these are available:
python3 --version # needs 3.10+
pip3 show selenium openpyxl webdriver-manager 2>/dev/null | grep Name
If any are missing, install them:
pip3 install selenium openpyxl webdriver-manager -q
Ask the user (or infer from context) for:
| Parameter | Default | Description |
|---|---|---|
NESSUS_URL | https://127.0.0.1:8834 | Nessus portal URL |
USERNAME | admin | Nessus login username |
PASSWORD | admin | Nessus login password |
SCAN_ID | (required) | Numeric scan ID from the URL, e.g. 19 from #/scans/reports/19/... |
HOST_ID | (required) | Numeric host ID from the URL, e.g. 2 from .../hosts/2/... |
HOST_LABEL | (optional) | Human label for output filenames, e.g. GETS_PRD_168 |
OUTPUT_DIR | ~/ (home) | Where to save output files |
The scan ID and host ID can be read directly from the Nessus URL the user provides, e.g.:
https://127.0.0.1:8834/#/scans/reports/19/hosts/2/vulnerabilities
→ SCAN_ID=19, HOST_ID=2
The skill script is bundled at:
~/.agents/skills/nessus-export/nessus_export_tool.py
Run it with the collected parameters:
python3 ~/.agents/skills/nessus-export/nessus_export_tool.py \
--url NESSUS_URL \
--user USERNAME \
--pass PASSWORD \
--scan SCAN_ID \
--host HOST_ID \
--label HOST_LABEL \
--outdir OUTPUT_DIR
Example for a scan at #/scans/reports/19/hosts/2/vulnerabilities:
python3 ~/.agents/skills/nessus-export/nessus_export_tool.py \
--url https://127.0.0.1:8834 \
--user admin --pass admin \
--scan 19 --host 2 \
--label GETS_PRD_168
After the script completes, verify both files exist:
ls -lh ~/nessus_<LABEL>_vulnerabilities.xlsx
ls -lh ~/nessus_<LABEL>_vulnerabilities.nessus
Then open the Excel:
open ~/nessus_<LABEL>_vulnerabilities.xlsx
Tell the user:
Each run produces two files in OUTPUT_DIR:
| File | Format | Description |
|---|---|---|
nessus_<LABEL>_vulnerabilities.xlsx | Excel | Colour-coded workbook with 4 sheets |
nessus_<LABEL>_vulnerabilities.nessus | XML | Native Nessus format, re-importable into Nessus |
| Sheet | Description |
|---|---|
| Summary | Host IP, OS, MAC, severity counts |
| Vulnerabilities (N) | Exact match to Nessus UI table — one row per UI group |
| All Findings (N) | Every individual finding with port, protocol, CVE, CVSS, synopsis, solution, plugin output |
| Critical & High | Filtered view of critical and high severity findings only |
| Severity | Colour |
|---|---|
| Critical | 🔴 Red #FF0000 |
| High | 🟠 Orange #FF6600 |
| Medium | 🟡 Yellow #FFCC00 |
| Low | 🟢 Green #66CC00 |
| Info | 🔵 Blue #99CCFF |
| Mixed | 🟣 Purple #CC99FF |
.nessus XML#/scans/reports/{SCAN_ID}/hosts/{HOST_ID}/vulnerabilities and scrapes the vulnerability table rows (matching the exact count shown in the UI).nessus XML for full details (CVE, CVSS, synopsis, description, solution, plugin output)| Problem | Fix |
|---|---|
| Login failed | Verify --user / --pass credentials |
| ChromeDriver mismatch | Run pip3 install --upgrade webdriver-manager |
| Download timeout | Nessus may be slow; the script waits 60s |
| 0 rows scraped | Check SCAN_ID and HOST_ID match the URL |
| Certificate error | Already handled with --ignore-certificate-errors |
In addition to Excel + .nessus export, you can generate standalone HTML reports:
python3 ~/.agents/skills/nessus-export/nessus_html_report.py \
~/nessus_GETS_PRD_168_vulnerabilities.nessus \
--label GETS_PRD_168
This produces two self-contained HTML files:
| File | Description |
|---|---|
<LABEL>_by_host.html | Vulnerabilities grouped by host, sorted by severity with collapsible detail panels |
<LABEL>_by_plugin.html | Vulnerabilities grouped by plugin/CVE, showing all affected hosts and ports |
Features:
Note: Nessus Essentials free tier does not support built-in HTML reports. This tool generates equivalent reports directly from the
.nessusXML file.
.nessus file downloaded is the unmodified export from the Nessus portal — it can be re-imported into any Nessus instance