Skip to main content

Robot Framework keyword library for deterministic remote command execution and SFTP file transfer via SSH.

Project description

robotframework-okw-remote-ssh

Standalone Robot Framework library for deterministic, synchronous remote interaction via SSH.

Session-based command execution, structured verification (stdout, stderr, exit code, duration), and SFTP file transfer. Designed for CI pipelines, infrastructure validation, and cross-platform automation (Linux, macOS, Windows with OpenSSH).

Keyword Documentation (Libdoc)

Features

  • Session-based SSH connections via Paramiko
  • Strict separation of execution and verification
  • Command queuing: Set Remote collects commands, Execute Remote sends them in one SSH call (preserves shell context)
  • Three match modes: EXACT, WCM (wildcard: *, ?), REGX (regex)
  • SFTP file transfer: upload, download, verify, clear, remove (files and directories)
  • OKW token support: $IGNORE (skip), $EMPTY (assert empty)
  • Value expansion: $MEM{KEY} placeholders across all parameters
  • No GUI coupling, no dependency on OKW Core

Three-Phase Model

All keywords follow a fixed pattern:

Phase Keywords Purpose
Prepare Set Remote Queue commands (no SSH call)
Execute Execute Remote, Execute Remote And Continue Send commands and store result
Verify Verify Remote Response, Verify Remote Stderr, Verify Remote Exit Code, ... Evaluate stored result

Note: Prepare is optional — Execute Remote can also be called directly with a command. When multiple Set Remote calls are queued, Execute Remote joins them with && and sends them as one SSH call. This preserves shell context (working directory, variables).

Alternative

Looking for a general-purpose SSH library? See SSHLibrary. A detailed feature comparison explains the differences in approach.

Installation

pip install robotframework-okw-remote-ssh

Quick Start

*** Settings ***
Library    robotframework_okw_remote_ssh.RemoteSshLibrary

*** Test Cases ***
Single Command
    Open Remote Session      myhost    my_server
    Execute Remote           myhost    echo Hello
    Verify Remote Response   myhost    Hello
    Close Remote Session     myhost

Multi Command With Context
    Open Remote Session          myhost    my_server
    Set Remote                   myhost    cd /opt/app
    Set Remote                   myhost    ls -la
    Execute Remote               myhost
    Verify Remote Response WCM   myhost    *app*
    Close Remote Session         myhost

Tolerate Expected Errors
    Open Remote Session              myhost    my_server
    Execute Remote And Continue      myhost    cat /no/such/file
    Verify Remote Exit Code          myhost    1
    Verify Remote Stderr WCM         myhost    *No such file*
    Close Remote Session             myhost

Session Configuration

Sessions are configured via YAML files in remotes/ (or a custom config directory).

Example remotes/my_server.yaml:

host: 10.0.0.1
port: 22
username: testuser
auth:
  type: password
  secret_id: "my_server/testuser"

Passwords are stored separately in ~/.okw/secrets.yaml (never in the repository).

Keywords

Session Lifecycle

Keyword Description
Open Remote Session Opens a named SSH session using a YAML config reference
Close Remote Session Closes the session and releases all resources
Close All Remote Sessions Closes all open sessions (idempotent, for suite teardown)

Execution

Keyword Description
Set Remote Queues a command for later execution (no SSH call). Supports $MEM{KEY} expansion.
Execute Remote With command: executes immediately. Without: joins all queued Set Remote commands with && and executes. FAIL on exit_code != 0.
Execute Remote And Continue Same as Execute Remote, but never fails on nonzero exit code.

Verification -- stdout

Keyword Description
Verify Remote Response EXACT match on stdout
Verify Remote Response WCM Wildcard match on stdout (* = any chars, ? = one char)
Verify Remote Response REGX Regex match on stdout

Verification -- stderr

Keyword Default Description
Verify Remote Stderr $EMPTY EXACT match on stderr. Without argument: asserts empty
Verify Remote Stderr WCM $EMPTY Wildcard match on stderr
Verify Remote Stderr REGX $EMPTY Regex match on stderr

Verification -- exit code / duration

Keyword Description
Verify Remote Exit Code Numeric exact compare
Verify Remote Duration Expression check: >, >=, <, <=, ==, range a..b

Memorize

Keyword Description
Memorize Remote Response Field Stores a response field (stdout, stderr, exit_code, duration_ms) in $MEM{KEY} for later use

File Transfer -- Upload / Download

Keyword Description
Put Remote File Uploads a file via SFTP
Get Remote File Downloads a file via SFTP
Put Remote Directory Recursively uploads a directory via SFTP
Get Remote Directory Recursively downloads a directory via SFTP

File Transfer -- Verify

Keyword Default Description
Verify Remote File Exists YES Asserts file exists (YES) or does not exist (NO)
Verify Remote Directory Exists YES Asserts directory exists (YES) or does not exist (NO)

The expected parameter accepts YES/NO, TRUE/FALSE, or 1/0 (case-insensitive).

File Transfer -- Verify Directory Contents

Keyword Description
Verify Remote Directory Contains EXACT name match against directory entries
Verify Remote Directory Contains WCM Wildcard match (*, ?) against directory entries
Verify Remote Directory Contains REGX Regex match against directory entries
Verify Remote Directory Count Verifies number of entries in directory

File Transfer -- Memorize

Keyword Description
Memorize Remote Directory Contents Stores directory listing (newline-separated) in $MEM{KEY}

File Transfer -- Permissions

Keyword Description
Set Remote File Mode Sets file permissions via SFTP chmod (e.g. 0755)
Verify Remote File Mode Verifies file permissions via SFTP stat (EXACT octal match)
Memorize Remote File Mode Stores file permissions (4-digit octal) in $MEM{KEY}

Put Remote File and Put Remote Directory accept an optional mode parameter.

File Transfer -- Clear

Keyword Description
Clear Remote Directory Deletes files in the directory (not in subdirectories), keeps directory structure
Clear Remote Directory Recursively Deletes all files recursively, keeps entire directory tree

File Transfer -- Remove (idempotent)

All remove keywords are idempotent: if the target does not exist, they return PASS.

Keyword Description
Remove Remote File Removes a single file
Remove Remote Directory Removes an empty directory
Remove Remote Directory Recursively Removes a directory and all its contents

OKW Token Support

Token Behavior
$IGNORE Keyword becomes a no-op (PASS). Execution/verification/transfer is skipped.
$EMPTY For verify keywords: asserts that the checked field is empty.

AI Test Generation

Test cases can be generated with any LLM (Claude, ChatGPT, Copilot, ...). The system prompts for test generation are maintained centrally in robotframework-okw4robot/prompts/.

Copy the prompt into your LLM and describe what you want to test in natural language. The LLM produces a ready-to-run .robot file.

License

AGPL-3.0-or-later. See LICENSE for details.

Project details


Download files

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

Source Distribution

robotframework_okw_remote_ssh-0.4.0.tar.gz (35.8 kB view details)

Uploaded Source

Built Distribution

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

robotframework_okw_remote_ssh-0.4.0-py3-none-any.whl (34.0 kB view details)

Uploaded Python 3

File details

Details for the file robotframework_okw_remote_ssh-0.4.0.tar.gz.

File metadata

File hashes

Hashes for robotframework_okw_remote_ssh-0.4.0.tar.gz
Algorithm Hash digest
SHA256 bfc82568e66d156154f51228f926153445971672ca72d71b3b82994d65aa93ff
MD5 6e5ad91b4433140587193263f7c0b276
BLAKE2b-256 6963acc2d5a13650588220bcf81f4082dc648f18ed82b31d6b85ec693d3eba4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for robotframework_okw_remote_ssh-0.4.0.tar.gz:

Publisher: publish-pypi.yml on Hrabovszki1023/robotframework-okw-remote-ssh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file robotframework_okw_remote_ssh-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for robotframework_okw_remote_ssh-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 830bdf8ab1c842cf44fc5964edd0f6ece73162ac7e4707b37cccb2881fa18c41
MD5 29addaa03b7a53da03229e0a9c0ff65d
BLAKE2b-256 32a3ffa2fccec2a44af8d8c6d1dd6d62311120083d6e98e5e45afa6367aa4fba

See more details on using hashes here.

Provenance

The following attestation bundles were made for robotframework_okw_remote_ssh-0.4.0-py3-none-any.whl:

Publisher: publish-pypi.yml on Hrabovszki1023/robotframework-okw-remote-ssh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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