Запуск команд Linux через SSH в Python: методы и примеры

Чтобы запустить последовательность команд Linux через SSH-клиент на Python, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1: использование библиотеки paramiko

import paramiko
# Establish SSH connection
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='your_host', username='your_username', password='your_password')
# Run commands
commands = [
    'command1',
    'command2',
    'command3'
]
for command in commands:
    stdin, stdout, stderr = ssh.exec_command(command)
    # Process command output if needed
    output = stdout.read().decode('utf-8')
    error = stderr.read().decode('utf-8')
    print(f'Command: {command}')
    print(f'Output: {output}')
    print(f'Error: {error}')
# Close SSH connection
ssh.close()

Метод 2: использование модуля subprocess

import subprocess
# SSH command template
ssh_command_template = 'ssh your_username@your_host "{}"'
# Run commands
commands = [
    'command1',
    'command2',
    'command3'
]
for command in commands:
    ssh_command = ssh_command_template.format(command)
    process = subprocess.Popen(ssh_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = process.communicate()
    print(f'Command: {command}')
    print(f'Output: {output.decode("utf-8")}')
    print(f'Error: {error.decode("utf-8")}')

Метод 3. Использование библиотеки fabric

from fabric import Connection
# Establish SSH connection
c = Connection(host='your_host', user='your_username', connect_kwargs={"password": "your_password"})
# Run commands
commands = [
    'command1',
    'command2',
    'command3'
]
for command in commands:
    result = c.run(command)
    print(f'Command: {command}')
    print(f'Output: {result.stdout}')
    print(f'Error: {result.stderr}')
# Close SSH connection
c.close()

Это всего лишь несколько примеров того, как вы можете запускать команды Linux через SSH-клиент на Python. Не забудьте заменить 'your_host', 'your_username'и 'your_password'соответствующими значениями для вашего SSH-соединения.