Share an OpenVAS / Greenbone report
A Greenbone vulnerability scan produces the most operationally sensitive document in a typical infrastructure team's year: every host it could reach, every open port, every service version, and every known vulnerability against them.
The export options are HTML, PDF, CSV and XML:
Scans → Reports → select the report → Download → Report format: HTML
And then it becomes an email attachment, or a file on a share drive, and stays there — accurate for about a week, and permanently un-recallable.
Filter before you export
The default full-and-fast configuration produces enormous reports, most of it informational. A report that opens on 4,000 "Log" severity entries does not get read past the first screen.
In the report view, filter to what somebody will act on:
severity>3.9 and apply_overrides=1 and rows=1000
That gives you medium and above, with your accepted-risk overrides applied, and it usually reduces the report by an order of magnitude. Export that view — Greenbone applies the active filter to the download.
Publish it
Drag the exported HTML into the app, or POST it:
curl -fsS -X POST "https://commareports.com/api/v1/reports" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html openvas-report.html \
--arg t "Greenbone — DMZ subnet, 2026-09-08" \
'{title: $t, html: $html}')"
To do it from the scan job rather than by hand, pull the report over GMP first:
gvm-cli --gmp-username "$GVM_USER" --gmp-password "$GVM_PASS" \
socket --xml "<get_reports report_id=\"$REPORT_UUID\" \
format_id=\"6c248850-1f62-11e1-b082-406186ea4fc5\" \
filter=\"severity>3.9 apply_overrides=1\"/>" \
| xmlstarlet sel -t -v '//report_format/../text()' | base64 -d > openvas-report.html
(6c248850-… is the built-in HTML report format id; confirm it against
<get_report_formats/> on your installation.)
Set the access first
Reports are private by default, and this is a report type where that default is load-bearing. It is an inventory of your internal estate and its weaknesses.
- Team access for the infrastructure group that owns remediation.
- Named reviewers when an auditor or a specific external party needs it.
- Never public, and think twice before domain-gated if the domain is large.
See the sharing model.
Scheduled scans, one URL
The point of a recurring scan is the trend, and the trend is invisible when every run produces a new attachment. PATCH one report id per scan target:
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html openvas-report.html \
--arg t "Greenbone — DMZ subnet, $(date +%F)" '{title: $t, html: $html}')"
One stable URL per subnet, one revision per scan. "Did the patch window actually clear those?" becomes a comparison between two revisions rather than a search through a mailbox.
What review adds
- Anchored threads per host or finding, so "10.4.2.19 is decommissioned, ticket INF-882" is recorded where the finding is, not in a side channel.
- Revisions, which give you the remediation trend as evidence.
- Revocable access, so a contractor's view ends when the engagement does.
See commenting on HTML.
Limits
- Entry HTML: 5 MB. An unfiltered scan of a large network will exceed it — which is the same reason it would not be read. Filter by severity, or publish per-subnet reports.
- 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.