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.
- hostname: the hostname to connect to
- command: the command to execute
- user: connect with this user
- port: connect to this port
Example:
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",
)
Global arguments
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.keyscanbefore uploading the file
Global arguments
This operation also inherits all global arguments.
ssh.keyscan¶
Check/add hosts to the ~/.ssh/known_hosts file.
- hostname: hostname that should have a key in
known_hosts - force: if the key already exists, remove and rescan
Example:
from pyinfra.operations import ssh
ssh.keyscan(
name="Set add server two to known_hosts on one",
hostname="two.example.com",
)
Global arguments
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.keyscanbefore uploading the file
Global arguments
This operation also inherits all global arguments.