Ssh Operations

Execute commands and up/download files from the remote host.

Eg: pyinfra -> inventory-host.net <-> another-host.net

Facts used in these operations: files.File, files.FindInFile, server.Home.

ssh.command

Stateless operation

This operation will always execute commands and is not idempotent.

Execute commands on other servers over SSH.

ssh.command(hostname: str, command: str, user: str | None=None, port=22, **kwargs)

hostname**: the hostname to connect to command**: the command to execute user**: connect with this user port**: connect to this port

ample:**

ode:: python

ssh.command(

name=”Create file by running echo from host one to host two”, hostname=”two.example.com”, command=”echo ‘one was here’ > /tmp/one.txt”, user=”vagrant”,

) Note:

This operation also inherits all global arguments.

ssh.download

Download files from other servers using scp.

ssh.download(
    hostname: str, filename: str, local_filename: str | None=None, force=False, port=22,
    user: str | None=None, ssh_keyscan=False, **kwargs,
)

hostname**: hostname to upload to filename**: file to download local_filename**: where to download the file to (defaults to filename) force**: always download the file, even if present locally port**: connect to this port user**: connect with this user ssh_keyscan**: execute ssh.keyscan before uploading the file Note:

This operation also inherits all global arguments.

ssh.keyscan

Check/add hosts to the ~/.ssh/known_hosts file.

ssh.keyscan(hostname: str, force=False, port=22, **kwargs)

hostname**: hostname that should have a key in known_hosts force**: if the key already exists, remove and rescan

ample:**

ode:: python

ssh.keyscan(

name=”Set add server two to known_hosts on one”, hostname=”two.example.com”,

) Note:

This operation also inherits all global arguments.

ssh.upload

Stateless operation

This operation will always execute commands and is not idempotent.

Upload files to other servers using scp.

ssh.upload(
    hostname: str, filename: str, remote_filename: str | None=None, port=22,
    user: str | None=None, use_remote_sudo=False, ssh_keyscan=False, **kwargs,
)

hostname**: hostname to upload to filename**: file to upload remote_filename**: where to upload the file to (defaults to filename) port**: connect to this port user**: connect with this user use_remote_sudo**: upload to a temporary location and move using sudo ssh_keyscan**: execute ssh.keyscan before uploading the file Note:

This operation also inherits all global arguments.