# Provided Tools

Currently, gvm-tools comes with three command line interface programs:

- gvm-cli

- gvm-script

- gvm-pyshell

All of these programs are clients communicating either via Greenbone Management Protocol (GMP) or Open Scanner Protocol (OSP). The connection is established using a TLS, SSH or Unix Domain Socket communication channel.

All tools take several arguments and parameters. gvm-tools allows setting defaults for most of these in a configuration file. See Configuration for details about the possible settings and capabilities.

## gvm-cli

gvm-cli is a low level tool which offers sending and receiving commands and responses for the XML-based GMP and OSP directly via the command line. It is intended for simple scripting via shell.

    > gvm-cli --help
    usage: gvm-cli [-h] [-c [CONFIG]]
                  [--log [{DEBUG,INFO,WARNING,ERROR,CRITICAL}]]
                  [--timeout TIMEOUT] [--gmp-username GMP_USERNAME]
                  [--gmp-password GMP_PASSWORD] [-V]
                  CONNECTION_TYPE ...

    optional arguments:
      -h, --help            show this help message and exit
      -c [CONFIG], --config [CONFIG]
                            Configuration file path (default: ~/.config/gvm-
                            tools.conf)
      --log [{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                            Activate logging (default level: None)
      --timeout TIMEOUT     Response timeout in seconds, or -1 to wait
                            indefinitely (default: 60)
      --gmp-username GMP_USERNAME
                            Username for GMP service (default: '')
      --gmp-password GMP_PASSWORD
                            Password for GMP service (default: '')
      -V, --version         Show version information and exit

    connections:
      valid connection types

      CONNECTION_TYPE       Connection type to use
        ssh                 Use SSH to connect to service
        tls                 Use TLS secured connection to connect to service
        socket              Use UNIX Domain socket to connect to service

Examples:

    > gvm-cli socket --xml "<get_version/>"
    <get_version_response status="200" status_text="OK"><version>7.0</version></get_version_response>

    > gvm-cli socket --xml "<get_tasks/>"
    <get_tasks_response status="200" status_text="OK">
    ...
    </get_tasks_response>

    > gvm-cli socket < commands.xml

## gvm-script

Added in version 2.0.

gvm-script allows running gvm scripts which are Python based scripts calling the python-gvm API. Depending on the --protocol argument a global gmp or osp object is passed to the script.

Note

gvm-script is only available with gvm-tools version 2.0 and beyond.

    usage: gvm-script [-h] [-c [CONFIG]]
                      [--log [{DEBUG,INFO,WARNING,ERROR,CRITICAL}]]
                      [--timeout TIMEOUT] [--gmp-username GMP_USERNAME]
                      [--gmp-password GMP_PASSWORD] [-V] [--protocol {GMP,OSP}]
                      CONNECTION_TYPE ...

    optional arguments:
      -h, --help            show this help message and exit
      -c [CONFIG], --config [CONFIG]
                            Configuration file path (default: ~/.config/gvm-
                            tools.conf)
      --log [{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                            Activate logging (default level: None)
      --timeout TIMEOUT     Response timeout in seconds, or -1 to wait
                            indefinitely (default: 60)
      --gmp-username GMP_USERNAME
                            Username for GMP service (default: '')
      --gmp-password GMP_PASSWORD
                            Password for GMP service (default: '')
      -V, --version         Show version information and exit
      --protocol {GMP,OSP}  Service protocol to use (default: GMP)

    connections:
      valid connection types

      CONNECTION_TYPE       Connection type to use
        ssh                 Use SSH to connect to service
        tls                 Use TLS secured connection to connect to service
        socket              Use UNIX Domain socket to connect to service

## gvm-pyshell

gvm-pyshell is a tool to use the python-gvm API interactively. Running the tool will open a Python interpreter in the interactive mode providing a global gmp or osp object depending on the --protocol argument.

The interactive shell can be exited with:

- `Ctrl`+`D` on Linux or

- `Ctrl`+`Z` on Windows

    > gvm-pyshell --help
    usage: gvm-pyshell [-h] [-c [CONFIG]]
                      [--log [{DEBUG,INFO,WARNING,ERROR,CRITICAL}]]
                      [--timeout TIMEOUT] [--gmp-username GMP_USERNAME]
                      [--gmp-password GMP_PASSWORD] [-V] [--protocol {GMP,OSP}]
                      CONNECTION_TYPE ...

    optional arguments:
      -h, --help            show this help message and exit
      -c [CONFIG], --config [CONFIG]
                            Configuration file path (default: ~/.config/gvm-
                            tools.conf)
      --log [{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                            Activate logging (default level: None)
      --timeout TIMEOUT     Response timeout in seconds, or -1 to wait
                            indefinitely (default: 60)
      --gmp-username GMP_USERNAME
                            Username for GMP service (default: '')
      --gmp-password GMP_PASSWORD
                            Password for GMP service (default: '')
      -V, --version         Show version information and exit
      --protocol {GMP,OSP}  Service protocol to use (default: GMP)

    connections:
      valid connection types

      CONNECTION_TYPE       Connection type to use
        ssh                 Use SSH to connect to service
        tls                 Use TLS secured connection to connect to service
        socket              Use UNIX Domain socket to connect to service

Example:

    > gvm-pyshell socket
    GVM Interactive Console 2.0.0 API 1.0.0. Type "help" to get information about functionality.
    >>> gmp.get_protocol_version()
    '7'
    >>> gmp.get_version().get('status')
    '200'
    >>> gmp.get_version()[0].text
    '7.0'
    >>> [t.find('name').text for t in tasks.xpath('task')]
    ['Scan Task', 'Simple Scan', 'Host Discovery']