| SSH |
|
SSH - это невероятно мощный и широко используемый протокол. Его можно также воспринимать и как инструмент, потому что наиболее распространенная его реализация носит то же самое имя. SSH обеспечивает безопасное соединение с удаленным сервером, выполнение команд оболочки, передачу файлов и переназначение портов в обоих направлениях через соединение. Если у вас имеется утилита командной строки ssh, почему бы тогда не воспользоваться протоколом SSH в сценарии? Вся прелесть здесь состоит в том, что вы получаете всю мощь протокола SSH в комбинации с широкими возможностями языка Python. Протокол SSH2 реализован на языке Python в виде библиотеки с именем paramiko. Из сценариев, которые содержат только программный код на языке Python, вы можете организовать подключение к серверу SSH и реализовать выполнение задач SSH. В примере 5.9 демонстрируется, как можно выполнить соединение с сервером SSH и выполнить простую команду. Пример 5.9. Соединение с сервером SSH и выполнение команды, в удаленной системе
Как видно из листинга, мы импортируем модуль paramiko и определяем три переменные. Затем создаем объект SSHClient. После этого производится загрузка ключей хоста, которые в операционной системе Linux извлекаются из файла «known_hosts». Затем выполняется соединение с сервером SSH. Ни в одном из этих действий нет ничего сложного, особенно, если вы уже знакомы с SSH. Теперь мы готовы выполнить команду в удаленной системе. Метод exec_command() выполняет указанную команду и возвращает три файловых дескриптора, ассоциированных с выполняемой командой: стандартный ввод, стандартный вывод и стандартный вывод сообщений об ошибках. Чтобы показать, что команда выполняется на машине с IP-адресом, который был использован для создания соединения SSH, мы вывели результаты выполнения команды ifconfig на удаленном сервере:
Выглядит так, как если бы мы выполнили команду ifconfig на локальной машине, только IP-адрес отличается. В примере 5.10 показано, как можно с помощью модуля paramiko выполнять передачу файлов по протоколу SFTP между удаленной и локальной машинами. В данном случае пример только получает файлы с удаленной машины, используя для этого метод get(). Если у вас возникнет потребность передать файл на удаленную машину, вы можете воспользоваться методом put(). Пример 5.10. Получение файлов с сервера SSH
В случае, если вы захотите использовать открытые/закрытые ключи вместо паролей, в примере 5.11 приводится модифицированная версия сценария, выполняющего команду в удаленной системе, с использованием ключа RSA. Пример 5.11. Соединение с сервером SSH и удаленное выполнение команды -с использованием закрытого ключа
И в примере 5.12 приводится модифицированная версия сценария, выполняющего передачу файлов и использующего ключ RSA. Пример 5.12. Получение файлов с сервера SSH
Related Articles
Set as favorite
Bookmark
Email This
Hits: 309 Комментарии (0)RSS feed CommentsНаписать комментарий |