Найти тему
programmer's notes (python and more)

Программирование на языке Python. Работа с сервером ssh и библиотека paramiko

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Клиентский доступ на Python к серверу SSH с помощью библиотеки paramiko

Библиотека paramiko не единственная, которая позволяет общаться с сервером SSH. И я ещё о других напишу. Но paramiko действительно хороша. Как говорят: "легка в использовании".

Программа ниже (рисунок 1) показывает как соединиться с ssh-сервером и выполнять на нём команды, получая их результат здесь, у клиента.

Рисунок 1. Соединение с сервером SSH и удалённое выполнение команд. Текст программы см. ниже по ссылке
Рисунок 1. Соединение с сервером SSH и удалённое выполнение команд. Текст программы см. ниже по ссылке
primer336.py

Результат выполнения программы (фрагмент)

total 208
drwx-----x 26 admin admin 4096 Sep 14 14:44 .
drwxr-xr-x  4 root  root  4096 May 29  2022 ..
-rw-------  1 admin admin   53 Sep 14 13:58 .Xauthority
drwxr-xr-x  4 admin admin 4096 May 29  2022 .apt
-rw-------  1 admin admin  902 Sep 12 19:36 .bash_history
-rw-------  1 admin admin  217 Jul 26  2021 .bash_logout
-rw-------  1 admin admin  259 Jul 26  2021 .bash_profile
-rw-------  1 admin admin  188 Jul 26  2021 .bashrc
drwx------ 15 admin admin 4096 Apr 10 16:34 .cache
drwx------ 19 admin admin 4096 Jun 11  2022 .config
-rw-r--r--  1 admin admin   23 May 29  2022 .dmrc
drwx------  3 admin admin 4096 Jun  5  2022 .gnome
-rw-------  1 admin admin  275 Dec  6  2021 .gtkrc-2.0

Пояснения к программе

  • Клиент представляет собой объект класса SSHClient.
  • Далее определяем политику подключения: set_missing_host_key_policy(), когда выполнятся подключение к серверу, ключ которого неизвестен. Данные строка не обязательна.
  • Метод connect() осуществляет непосредственное соединение с сервером. При этом указываются параметры соединения.
  • exec_command() - позволяет удалённо выполнять команды и возвращать консольный вывод. В частности переменная cou получает весь консольный вывод, кроме вывода сообщений об ошибках.
  • В конце соединение должно быть закрыто. Также обращу внимание на обязательную строку del cl, cin, cou, cer.

Следующая программа показывает как обмениваться файлами между клиентом и сервером SSH по протоколу sftp

Рисунок 2. Передача файлов по протоколу sftp. Текст программы см. ниже по ссылке
Рисунок 2. Передача файлов по протоколу sftp. Текст программы см. ниже по ссылке
primer337.py

Пояснение к программе

  • Для обмена файлами нужно создать объект класса paramiko.Transport.
  • Далее осуществляется соединение connect().
  • наконец создаётся клиент SFTPClient.from_transport(), с помощью которого можно перемещать файлы в обе стороны: get() - с сервера SSH на клиентский компьютер, put() - с клиентского компьютера на SSH сервер.

Ну пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Подсоединиться к серверу это пол дела, вы заставьте его выполнять ваши команды
Подсоединиться к серверу это пол дела, вы заставьте его выполнять ваши команды