Чтобы обрабатывать вывод команды SSH построчно с помощью Python, можно использовать модуль paramiko.
1. Установка модуля paramiko:
pip install paramiko
2. Подключение и выполнение команды SSH:
import paramiko # Создание клиента SSH client = paramiko.SSHClient() # Добавление хоста в список известных хостов client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Подключение к SSH-серверу client.connect(hostname='hostname', username='username', password='password') # Выполнение команды SSH stdin, stdout, stderr = client.exec_command('command') # Обработка вывода построчно for line in stdout: # Делайте здесь что-то с каждой строкой вывода print(line.strip()) # Закрытие соединения SSH client.close()
В примере выше:
- hostname
- хост, к которому нужно подключиться по SSH
- username
- имя пользователя для авторизации
- password
- пароль пользователя для авторизации
- command
- команда, которую нужно выполнить на удаленном сервере
3. Обработка вывода команды:
Внутри цикла for
вы можете выполнять различные операции с каждой строкой вывода. Например, вы можете собирать данные в список для дальнейшей обработки:
output = [] for line in stdout: output.append(line.strip()) print(output) # Вывод списка с данными
Или вы можете анализировать строки на наличие нужной информации и принимать соответствующие действия:
for line in stdout: if 'error' in line: print('Произошла ошибка:', line) else: print('Строка без ошибки:', line)
4. Обработка ошибок:
Важно учесть возможные ошибки при подключении или выполнении команды SSH. Модуль paramiko генерирует исключения в случае ошибок, поэтому рекомендуется обернуть соответствующий код в блок try-except
:
try: # Подключение к SSH-серверу client.connect(hostname='hostname', username='username', password='password') # Выполнение команды SSH stdin, stdout, stderr = client.exec_command('command') # Обработка вывода построчно for line in stdout: print(line.strip()) # Закрытие соединения SSH client.close() except paramiko.AuthenticationException: print('Ошибка аутентификации. Проверьте имя пользователя и пароль.') except paramiko.SSHException as ex: print('Ошибка SSH:', str(ex)) except paramiko.Exception as ex: print('Ошибка Paramiko:', str(ex))
Этот блок try-except
позволяет обработать различные типы ошибок, которые могут возникнуть в процессе работы с модулем paramiko.