greenbone-feed-sync

July 14, 2026 ยท View on GitHub

Greenbone Logo

greenbone-feed-sync

Tool for downloading the Greenbone Community Feed.

greenbone-feed-sync assumes you are using the latest feed release and up to date components of the Greenbone Community Edition by default. It is highly configurable and can be adjusted easily for downloading different feed releases and types.

Installation

Version

greenbone-feed-sync uses semantic versioning.

Versions prior to 25.0.0 used calendar versioning.

Important

greenbone-feed-sync >= 25.0.0 requires gvmd 25.0.0 to work out of the box. If a version of gvmd < 24.0.0 is used, the feed release has to be set to 22.04 via the config file, the GREENBONE_FEED_SYNC_FEED_RELEASE environment variable or the --feed-release CLI argument. For example run greenbone-feed-sync --feed-release 22.04. Alternatively you can downgrade greenbone-feed-sync to a release version < 25.0.0.

Versions of gvmd between 24.0.0 and 25.0.0 have issues with the feed loading and require manual interventions.

Requirements

Python 3.10 and later is supported.

greenbone-feed-sync requires the rsync tool being installed and available within the PATH.

On Debian based Distributions like Ubuntu and Kali rsync can be installed via

sudo apt install rsync

Install using pipx

You can install the latest release of greenbone-feed-sync from the Python Package Index (pypi) using pipx

python3 -m pipx install greenbone-feed-sync

On Debian based Distributions like Ubuntu and Kali pipx itself can be installed via

sudo apt install pipx

Install using pip

NOTE: The pip install command does no longer work out-of-the-box in newer distributions like Ubuntu 23.04 or Debian 12 because of PEP 668. Please use the installation via pipx instead.

You can install the latest release of greenbone-feed-sync from the Python Package Index (pypi) using pip

python3 -m pip install greenbone-feed-sync

Usage

Most of the time you should just run the script without any arguments to download the new data for all necessary feed types

NOTE: See details about usage on Kali Linux

sudo greenbone-feed-sync

To get verbose progress output during the data download you might increase the verbosity

 sudo greenbone-feed-sync -vvv

If the script is run in a cron job the output can be turned off via

sudo greenbone-feed-sync --quiet

To download only a specific feed content the --type argument can be used

sudo greenbone-feed-sync --type nvt

Run --help to get information about all possible types and additional argument options

greenbone-feed-sync --help

Usage on Kali Linux

When running greenbone-feed-sync as root user, for example via sudo, the actual user and group of the process are changed to the gvm user and group via seteuid. This is done to ensure that gvmd and openvas-scanner can read the downloaded file contents.

When using the Greenbone Community Edition installed via packages on Kali Linux a different user and group are used. They are both named _gvm instead. Therefore the group and user settings need to be adjusted. This can be done by using a config file.

sudo mkdir /etc/gvm
sudo chmod +r /etc/gvm
cat <<EOF | sudo tee /etc/gvm/greenbone-feed-sync.toml
[greenbone-feed-sync]
user="_gvm"
group="_gvm"
EOF
sudo chmod +r /etc/gvm/greenbone-feed-sync.toml

Command Completion

greenbone-feed-sync comes with support for command line completion in bash and zsh.

Setup for bash:

echo "source ~/.greenbone-feed-sync-complete.bash" >> ~/.bashrc
greenbone-feed-sync --print-completion bash > ~/.greenbone-feed-sync-complete.bash

Alternatively, you can use the result of the completion command directly with the eval function of your bash shell:

eval "$(greenbone-feed-sync --print-completion bash)"

Setup for zsh:

echo 'fpath=("$HOME/.zsh.d" $fpath)' >> ~/.zsh
mkdir -p ~/.zsh.d/
greenbone-feed-sync --print-completion zsh > ~/.zsh.d/_greenbone_feed_sync

Settings

The greenbone-feed-sync script is adjustable for all kind of purposes and very flexible which content gets downloaded. Most likely you will never need to adjust the settings because the defaults will suffice. Changing the settings is only required for experts and testing purposes.

verbose

NameValue
CLI Argument--verbose, -v
Config Variableverbose
Environment VariableGREENBONE_FEED_SYNC_VERBOSE
Default Value2
DescriptionLog verbosity. -vvv for maximum verbosity.

quiet

NameValue
CLI Argument--quiet
Config Variable
Environment Variable
Default Value
DescriptionDisable all log output. Same as setting verbose or GREENBONE_FEED_SYNC_VERBOSE to 0

config

NameValue
CLI Argument--config, -c
Config Variable
Environment Variable
Default Value~/.config/greenbone-feed-sync.toml and /etc/gvm/greenbone-feed-sync.toml
DescriptionTOML config file to load settings from.

private-directory

NameValue
CLI Argument--private-directory
Config Variableprivate-directory
Environment VariableGREENBONE_FEED_SYNC_PRIVATE_DIRECTORY
Default Value
Description(Sub-)Directory to exclude from the sync which will never get deleted automatically.

compression-level

NameValue
CLI Argument--compression-level
Config Variablecompression-level
Environment VariableGREENBONE_FEED_SYNC_COMPRESSION_LEVEL
Default Value9
Descriptionrsync compression level 0-9. (0 - no compression, 9 - high compression)

type

NameValue
CLI Argument--type
Config Variable
Environment Variable
Default Valueall
DescriptionSpecifies which feed data should be downloaded. Possible values are all, nvt/nvts, gvmd-data, scap, cert, notus, nasl, report-format/report-formats, scan-config/scan-configs or port-list/port-lists.

feed-url

NameValue
CLI Argument
Config Variablefeed-url
Environment VariableGREENBONE_FEED_SYNC_URL
Default Valuersync://feed.community.greenbone.net/community
DescriptionURL to download the feed data from. Other URLs will be relative to this URL by default. For example using rsync://example.com as feed url the notus url will be rsync://example.com/vulnerability-feed/$FEED_VERSION/vt-data/notus/.

feed-release

Name
CLI Argument--feed-release
Config Variablefeed-release
Environment VariableGREENBONE_FEED_SYNC_FEED_RELEASE
Default Value25.0
DescriptionRelease series of the feed to be downloaded. Download destinations and URLs will use this variable.

destination-prefix

NameValue
CLI Argument--destination-prefix
Config Variabledestination-prefix
Environment VariableGREENBONE_FEED_SYNC_DESTINATION_PREFIX
Default Value/var/lib/
DescriptionDirectory prefix to use for default feed data download destinations. Other download destinations will be relative to this path by default. For example using /opt/lib as destination prefix will change the default of the notus destination to /opt/lib/notus.

gvmd-data-destination

NameValue
CLI Argument--gvmd-data-destination
Config Variablegvmd-data-destination
Environment VariableGREENBONE_FEED_SYNC_GVMD_DATA_DESTINATION
Default Value$DESTINATION_PREFIX/gvm/data-objects/gvmd/$FEED_VERSION/
DescriptionDestination of the downloaded gvmd data.

gvmd-data-url

NameValue
CLI Argument--gvmd-data-url
Config Variablegvmd-data-url
Environment VariableGREENBONE_FEED_SYNC_GVMD_DATA_URL
Default Value$FEED_URL/data-feed/$FEED_VERSION/
DescriptionURL to download the gvmd data from. This includes scan-configs, report-formats and port-lists.

notus-destination

NameValue
CLI Argument--notus-destination
Config Variablenotus-destination
Environment VariableGREENBONE_FEED_SYNC_NOTUS_DESTINATION
Default Value$DESTINATION_PREFIX/notus
DescriptionDestination of the downloaded notus data.

notus-url

NameValue
CLI Argument--notus-url
Config Variablenotus-url
Environment VariableGREENBONE_FEED_SYNC_NOTUS_URL
Default Value$FEED_URL/vulnerability-feed/$FEED_VERSION/vt-data/notus/
DescriptionURL to download the notus data from.

nasl-destination

NameValue
CLI Argument--nasl-destination
Config Variablenasl-destination
Environment VariableGREENBONE_FEED_SYNC_NASL_DESTINATION
Default Value$DESTINATION_PREFIX/openvas/plugins
DescriptionDestination of the downloaded nasl data.

nasl-url

NameValue
CLI Argument--nasl-url
Config Variablenasl-url
Environment VariableGREENBONE_FEED_SYNC_NASL_URL
Default Value$FEED_URL/vulnerability-feed/$FEED_VERSION/vt-data/nasl/
DescriptionURL to download the nasl data from.

scap-data-destination

NameValue
CLI Argument--scap-data-destination
Config Variablescap-data-destination
Environment VariableGREENBONE_FEED_SYNC_SCAP_DATA_DESTINATION
Default Value$DESTINATION_PREFIX/gvm/scap-data
DescriptionDestination of the downloaded SCAP data.

scap-data-url

NameValue
CLI Argument--scap-data-url
Config Variablescap-data-url
Environment VariableGREENBONE_FEED_SYNC_SCAP_DATA_URL
Default Value$FEED_URL/vulnerability-feed/$FEED_VERSION/scap-data
DescriptionURL to download the SCAP data from.

cert-data-destination

NameValue
CLI Argument--cert-data-destination
Config Variablecert-data-destination
Environment VariableGREENBONE_FEED_SYNC_CERT_DATA_DESTINATION
Default Value$DESTINATION_PREFIX/gvm/cert-data
DescriptionDestination of the downloaded CERT data.

cert-data-url

NameValue
CLI Argument--cert-data-url
Config Variablecert-data-url
Environment VariableGREENBONE_FEED_SYNC_CERT_DATA_URL
Default Value$FEED_URL/vulnerability-feed/$FEED_VERSION/cert-data
DescriptionURL to download the CERT data from.

report-formats-destination

NameValue
CLI Argument--report-formats-destination
Config Variablereport-formats-destination
Environment VariableGREENBONE_FEED_SYNC_REPORT_FORMATS_DESTINATION
Default Value$DESTINATION_PREFIX/gvm/data-objects/gvmd/$FEED_VERSION/report-formats
DescriptionDestination of the downloaded report format data.

report-formats-url

NameValue
CLI Argument--report-formats-url
Config Variablereport-formats-url
Environment VariableGREENBONE_FEED_SYNC_REPORT_FORMATS_URL
Default Value$FEED_URL/data-feed/$FEED_VERSION/report-formats
DescriptionURL to download the report format data from.

scan-configs-destination

NameValue
CLI Argument--scan-configs-destination
Config Variablescan-configs-destination
Environment VariableGREENBONE_FEED_SYNC_SCAN_CONFIGS_DESTINATION
Default Value$DESTINATION_PREFIX/gvm/data-objects/gvmd/$FEED_VERSION/scan-configs
DescriptionDestination of the downloaded scan config data.

scan-configs-url

NameValue
CLI Argument--scan-configs-url
Config Variablescan-configs-url
Environment VariableGREENBONE_FEED_SYNC_SCAN_CONFIGS_URL
Default Value$FEED_URL/data-feed/$FEED_VERSION/scan-configs
DescriptionURL to download the scan config data from.

port-lists-destination

NameValue
CLI Argument--port-lists-destination
Config Variableport-lists-destination
Environment VariableGREENBONE_FEED_SYNC_PORT_LISTS_DESTINATION
Default Value$DESTINATION_PREFIX/gvm/data-objects/gvmd/$FEED_VERSION/port-lists
DescriptionDestination of the downloaded port list data.

port-lists-url

NameValue
CLI Argument--port-lists-url
Config Variableport-lists-url
Environment VariableGREENBONE_FEED_SYNC_PORT_LISTS_URL
Default Value$FEED_URL/data-feed/$FEED_VERSION/port-lists
DescriptionURL to download the port list data from.

gvmd-lock-file

NameValue
CLI Argument--gvmd-lock-file
Config Variablegvmd-lock-file
Environment VariableGREENBONE_FEED_SYNC_GVMD_LOCK_FILE
Default Value$DESTINATION_PREFIX/gvm/feed-update.lock
DescriptionFile to use for locking the feed synchronization for data loaded by the gvmd daemon. Used to avoid that more then one process accesses the feed data at the same time.

openvas-lock-file

NameValue
CLI Argument--openvas-lock-file
Config Variableopenvas-lock-file
Environment VariableGREENBONE_FEED_SYNC_OPENVAS_LOCK_FILE
Default Value$DESTINATION_PREFIX/openvas/feed-update.lock
DescriptionFile to use for locking the feed synchronization for data loaded by the openvas scanner. Used to avoid that more then one process accesses the feed data at the same time.

fail-fast

NameValue
CLI Argument--fail-fast, --failfast
Config Variablefail-fast
Environment VariableGREENBONE_FEED_SYNC_FAIL_FAST
Default Valuefalse
DescriptionStop after a first error has occurred. Otherwise the script tries to download additional data if specified.

no-wait

NameValue
CLI Argument--no-wait
Config Variableno-wait
Environment VariableGREENBONE_FEED_SYNC_NO_WAIT
Default Valuefalse
DescriptionFail directly if the lock file can't be acquired.

wait-interval

NameValue
CLI Argument--wait-interval
Config Variablewait-interval
Environment VariableGREENBONE_FEED_SYNC_LOCK_WAIT_INTERVAL
Default Value5
DescriptionTime to wait in seconds after failed lock attempt before re-trying to lock the file.

rsync-timeout

NameValue
CLI Argument--rsync-timeout
Config Variablersync-timeout
Environment VariableGREENBONE_FEED_SYNC_RSYNC_TIMEOUT
Default Value
DescriptionMaximum I/O timeout in seconds used for rsync. If no data is transferred for the specified time then rsync will exit. By default no timeout is set and the rsync default will be used.

no-permission-change

NameValue
CLI Argument--no-permission-change
Config Variableno-permission-change
Environment VariableGREENBONE_FEED_SYNC_NO_PERMISSION_CHANGE
Default Valuefalse
DescriptionDo not preserve permissions and skip normalizing the feed tree via rsync's --perms and --chmod options. By default permissions are preserved. Enable this to pass --no-perms to rsync, for storage that allows writing files but rejects changing their modes, for example some bind mounts, network filesystems or container volumes where rsync would otherwise fail with a permission error.

group

NameValue
CLI Argument--group
Config Variablegroup
Environment VariableGREENBONE_FEED_SYNC_GROUP
Default Valuegvm
DescriptionIf the greenbone-feed-sync script is run as root, the effective group is changed to this group name or ID.

user

NameValue
CLI Argument--user
Config Variableuser
Environment VariableGREENBONE_FEED_SYNC_USER
Default Valuegvm
DescriptionIf the greenbone-feed-sync script is run as root, the effective user is changed to this user name or ID.

greenbone-enterprise-feed-key

NameValue
CLI Argument--greenbone-enterprise-feed-key
Config Variablegreenbone-enterprise-feed-key
Environment VariableGREENBONE_FEED_SYNC_ENTERPRISE_FEED_KEY
Default Value/etc/gvm/greenbone-enterprise-feed-key
DescriptionFile to read the Greenbone Enterprise Feed key from. The key gives access to additional vulnerability tests for enterprise software among other advantages. See Greenbone Enterprise Feed and Greenbone Community Feed in Comparison for more details. The default URLs are adjusted according to the data in the key. If the key file does not exist it is ignored.

Config

It is possible to use a config file for loading the settings of the greenbone-feed-sync script. The config file uses the TOML format. Without explicitly passing a config file, greenbone-feed-sync tries to load ~/.config/greenbone-feed-sync.toml and if that file doesn't exist afterwards /etc/gvm/greenbone-feed-sync.toml.

Example:

[greenbone-feed-sync]
destination-prefix = "/opt/greenbone-feed"
lock-file = "/opt/greenbone-feed.lock"
no-wait = true

Development

greenbone-feed-sync uses uv for its own dependency management and build process.

First install poetry via pipx

python3 -m pipx install uv

Afterwards activate the git hooks for auto-formatting and linting via autohooks.

uv run autohooks activate

Validate the activated git hooks by running

uv run autohooks check

Maintainer

This project is maintained by Greenbone AG

Contributing

Your contributions are highly appreciated. Please create a pull request on GitHub. Bigger changes need to be discussed with the development team via the issues section at GitHub first.

License

Copyright (C) 2022-2026 Greenbone AG

Licensed under the GNU General Public License v3.0 or later.