Skip to main content

csle-cli

The command-line-interface (CLI) tool for CSLE.

PyPI version PyPI - Downloads

Requirements

  • Python 3.8+
  • csle-base
  • csle-common
  • csle-cluster
  • csle-collector
  • csle-attacker
  • csle-defender
  • csle-system-identification
  • gym-csle-stopping-game
  • gym-csle-apt-game
  • gym-csle-cyborg
  • csle-tolerance
  • gym-csle-intrusion-response-game
  • csle-agents

Development Requirements

  • Python 3.8+
  • flake8 (for linting)
  • flake8-rst-docstrings (for linting docstrings)
  • tox (for automated testing)
  • mypy (for static typing)
  • mypy-extensions (for static typing)
  • mypy-protobuf (for static typing)
  • types-PyYaml (for static typing)
  • types-paramiko (for static typing)
  • types-protobuf (for static typing)
  • types-requests (for static typing)
  • types-urllib3 (for static typing)
  • sphinx (for API documentation)
  • sphinxcontrib-napoleon (for API documentation)
  • sphinx-rtd-theme (for API documentation)
  • pytest-mock (for mocking tests)
  • pytest-grpc (for grpc tests)

Quickstart

To see the available commands, run:

csle --help

Examples:

  • Initialize management accounts
csle init
  • List available containers, emulations, images, and networks:
csle ls --all
  • List containers only
csle ls containers --all
  • List running containers only
csle ls containers
  • List emulations
csle ls emulations --all
  • List running emulations only
csle ls emulations
  • Inspect a specific emulation/container/image/network
csle ls <name>
  • Start/Stop/Clean a specific emulation/container
csle start | stop | clean <name>
  • Open a shell in a given container
csle shell <container-name>
  • Remove a container, image, network, emulation, or all
csle rm <container-name> | <network-name> | <image-name> | <emulation-name> all
  • Install emulations, simulations, the metastore, or Docker images
csle install emulations | simulations | derived_images | base_images | <emulation_name> | <simulation_name> | <derived_image_name> | <base_image_name> | metastore | all
  • Uninstall emulations, simulations, the metastore, or Docker images
csle uninstall emulations | simulations | derived_images | base_images | <emulation_name> | <simulation_name> | <derived_image_name> | <base_image_name> | metastore | all
  • Start trainnig job with a given id
csle trainingjob <id>
  • Start system identification job with a given id
csle systemidentificationjob <id>
  • Start data collection job with a given id
csle datacollectionjob <id>
  • Start the REST API
csle start flask
  • Start grafana
csle start | stop grafana
  • Start prometheus
csle start | stop prometheus
  • Start cadvisor
csle start | stop cadvisor
  • Start node-exporter
csle start | stop nodeexporter
  • Start hostmanagers
csle start | stop hostmanagers
  • Start hostmanager
csle start | stop hostmanager
  • Start clientmanager
csle start | stop clientmanager
  • Start snortmanagers
csle start | stop snortmanagers
  • Start snortmanager
csle start | stop snortmanager
  • Start elkmanager
csle start | stop elkmanager
  • Start trafficmanagers
csle start | stop trafficmanagers
  • Start trafficmanager
csle start | stop trafficmanager
  • Start kafkamanager
csle start | stop kafkamanager
  • Start ossecmanagers
csle start | stop ossecmanagers
  • Start ossecmanager
csle start | stop ossecmanager
  • Start ryumanager
csle start | stop ryumanager
  • Start filebeats
csle start | stop filebeats
  • Start filebeat
csle start | stop filebeat
  • Start metricbeats
csle start | stop metricbeats
  • Start metricbeat
csle start | stop metricbeat
  • Start heartbeats
csle start | stop heartbeats
  • Start heartbeat
csle start | stop heartbeat
  • Start packetbeats
csle start | stop packetbeats
  • Start packetbeat
csle start | stop packetbeat

Available Commands

command description argument 1 argument 2 argument 3 argument 4 argument 5 argument 6 flags
attacker Opens an attacker shell in the given emulation execution emulation_name execution_id
clean Removes a container, a network, an image, all networks, all images, all containers, all traces, or all statistics all,containers,emulations,emulation_traces,simulation_traces,emulation_statistics,emulation_executions,name execution_id
em Extracts status information of a given emulation emulation_name --host (check status of host managers), --stats (check status of Docker stats manager), --kafka (check status of kafka), --snortids (check status of the Snort IDS), --clients (check status of client population) --executions (check status of executions)
init Initializes CSLE and sets up management accounts
install Installs emulations and simulations in the metastore and creates Docker images emulations, simulations, emulation_name, simulation_name, derived_images, base_images, metastore, all
ls Lists the set of containers, networks, images, or emulations, or all containers, networks, images, emulations, all, environments, prometheus, node_exporter, cadvisor, statsmanager, managementsystem, simulations, emulation_executions, hostmanagers, clientmanager, snortmanagers, elkmanager, trafficmanagers, kafkamanager, ossecmanagers, ryumanager, filebeats, metricbeats, heartbeats, packetbeats, logfiles, logfile, emulation_description --all (list extended information), --running (list running entities only (default)), --stopped (list stopped entities only)
rm Removes a container, a network, an image, all networks, all images, or all containers network_name, container_name, image_name, networks, images, containers
shell Command for opening a shell inside a running container container_name
start Starts an entity, e.g. a container or the management system prometheus, node_exporter, grafana, cadvisor, flask, nginx, docker, postgresql, container_name, emulation_name, all, statsmanager, training_job, system_id_job, image, hostmanagers, hostmanager, clientmanager, snortmanagers, snortmanager, elkmanager, trafficmanagers, trafficmanager, kafkamanager, ossecmanagers, ossecmanager, ryumanager, filebeats, filebeat, metricbeats, metricbeat, heartbeats, heartbeat, packetbeats, packetbeat container_name (if the first argument corresponds to a container image), --id (execution id), --no_clients (skip starting client population), --no_traffic (skip starting traffic generators), --no_beats (skip starting/configuring beats), --no_network (skip creating virtual networks) --ip (to start a service on a specific node)
start_traffic Starts the traffic and client population on a given emulation emulation_name execution_id --mu (the mu paramter for the service time of the client arrivals), --lamb (the lambda parameter of the client arrival process), --t (time-step length to measure the arrival process), --nc (number of commands per client), --tsf (the time scaling factor for non-stationary Poisson processes),--psf (the period scaling factor for non-stationary Poisson processes)
statsmanager Starts the statsmanager locally port log_dir log_file max_workers
stop Stops an entity, e.g. an emulation execution or a container emulation_name, prometheus, node_exporter, cadvisor, grafana, flask, nginx, docker, postgresql, container_name, statsmanager, emulation_executions, all, hostmanagers, hostmanager, clientmanager, snortmanagers, snortmanager, elkmanager, trafficmanagers, trafficmanager, kafkamanager, ossecmanagers, ossecmanager, ryumanager, filebeats, filebeat, metricbeats, metricbeat, heartbeats, heartbeat, packetbeats, packetbeat execution_id --ip (to stop a service on a specific node)
stop_traffic Stops the traffic and client population on a given emulation emulation_name execution_id
systemidentificationjob Starts a systemidentification job with the given id job_id
trainingjob Starts a training job with the given id job_id
datacollectionjob Starts a data collection job with the given id job_id
uninstall Uninstall emulations and simulations from the metastore and removes Docker images emulations, simulations, emulation_name, simulation_name, derived_images, base_images, metastore, all

Requirements

  • Python 3.8+
  • click>=8.0.0
  • csle-common
  • csle-cluster
  • csle-collector
  • csle-attacker
  • csle-defender
  • csle-system-identification
  • gym-csle-stopping-game
  • csle-agents

Development Requirements

  • Python 3.8+
  • flake8 (for linting)
  • tox (for automated testing)
  • pytest (for unit tests)
  • pytest-cov (for unit test coverage)
  • mypy (for static typing)
  • sphinx (for API documentation)
  • sphinxcontrib-napoleon (for API documentation)
  • sphinx-rtd-theme (for API documentation)

Installation

# install from pip
pip install csle-cli==<version>
# local install from source
$ pip install -e csle-cli
# or (equivalently):
make install
# force upgrade deps
$ pip install -e csle-cli --upgrade
# git clone and install from source
git clone https://github.com/Kim-Hammar/csle
cd csle-cli
pip3 install -e .
# Install development dependencies
$ pip install -r requirements_dev.txt

Development tools

Install all development tools at once:

make install_dev

or

pip install -r requirements_dev.txt

API documentation

The latest documentation is available at https://kim-hammar.github.io/csle//docs

Static code analysis

To run the Python linter, execute the following command:

flake8 .
# or (equivalently):
make lint

To run the mypy type checker, execute the following command:

mypy .
# or (equivalently):
make types

Integration tests

To run the integration tests, execute the following command:

pytest
# or (equivalently):
make unit_tests

To generate a coverage report, execute the following command:

pytest --cov=csle_cli

Run tests and code analysis in different python environments

To run tests and code analysis in different python environemnts, execute the following command:

tox
# or (equivalently):
make tests

Create a new release and publish to PyPi

First build the package by executing:

python -m build
# or (equivalently)
make build

After running the command above, the built package is available at ./dist.

Push the built package to PyPi by running:

python -m twine upload dist/*
# or (equivalently)
make push

To run all commands for the release at once, execute:

make release

Author & Maintainer

Kim Hammar kimham@kth.se

Copyright and license

Creative Commons

LICENSE

(C) 2020-2026, Kim Hammar

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csle_cli-0.10.0.tar.gz (50.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

csle_cli-0.10.0-py3-none-any.whl (36.2 kB view details)

Uploaded Python 3

File details

Details for the file csle_cli-0.10.0.tar.gz.

File metadata

  • Download URL: csle_cli-0.10.0.tar.gz
  • Upload date:
  • Size: 50.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for csle_cli-0.10.0.tar.gz
Algorithm Hash digest
SHA256 d46eab487a44901879ae568760d43745a3cdb05e02ee6208e13cf534be9bfd8e
MD5 93f07cff8ea14e87af55380da8801711
BLAKE2b-256 e7a2f30e0fd1b6d553ef7063b1e4b5fcf91b5bd297e37a56f8936b794031ee38

See more details on using hashes here.

File details

Details for the file csle_cli-0.10.0-py3-none-any.whl.

File metadata

  • Download URL: csle_cli-0.10.0-py3-none-any.whl
  • Upload date:
  • Size: 36.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for csle_cli-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ed5afe830f52c671461407d0d16f3a0b858798d21a77e922f1455331cbb3252f
MD5 640e9f53247782d79d5e18434c629639
BLAKE2b-256 ecefb076077f95dbc6a4197eeb57543e21eff921cde981be34b2873b70b53af5

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page