Paramiko is a Python library that provides a high-level interface for SSH and SFTP operations. Fabric and Invoke are Python libraries that use Paramiko to execute commands and transfer files over SSH. Fabric is mainly used for automating deployment and configuration tasks, while Invoke is a more general-purpose task execution tool.
To use Paramiko with Fabric and Invoke, you need to install them first using pip:
pip install paramiko fabric invoke
Then, you can import them in your Python script and use their API to define and run tasks. For example, this is a simple Fabric task that connects to a remote host and runs a command:
from fabric import Connection, task
@task
def hello(c):
# c is a Connection object that represents the remote host
c.run("echo Hello from $(hostname)")
To run this task, you can use the fab
command-line tool:
fab -H user@host hello
This will prompt you for the SSH password and then execute the command on the remote host.
Similarly, this is a simple Invoke task that runs a command locally:
from invoke import task
@task
def hello(c):
# c is a Context object that represents the local environment
c.run("echo Hello from $(hostname)")
To run this task, you can use the invoke
command-line tool:
invoke hello
This will run the command on your local machine.
You can also combine Fabric and Invoke tasks in the same script and use them interchangeably. For example, this is a Fabric task that invokes another Invoke task:
from fabric import Connection, task
from invoke import task as invoke_task
@task
def hello(c):
c.run("echo Hello from $(hostname)")
@task
def greet(c):
# c is a Connection object that represents the remote host
# invoke the hello task locally
invoke_task(hello)(c.local)
# run the hello task remotely
hello(c)
To run this task, you can use the fab
command-line tool:
fab -H user@host greet
This will run the hello task both locally and remotely.