Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2020, 14:08   #1
artems67
Пользователь
 
Регистрация: 17.11.2015
Сообщений: 62
Злость Подключение к серверу altlinux по ssh через библиотеку paramiko

Добрый день,

Мне необходимо удаленно подключиться к серверу Altlinux и попасть в определенную директорию доступ к которой можно получить только через su. В директории необходимо пробежаться по паре каталогов и проверить некоторые файлы. Всё это нужно автоматизировать.

Я решил прибегнуть к библиотеке paramiko на яп Python, так как знаком с языком.

Собственно столкнулся с проблемой получения прав su.

Мой код:

Код:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=user, password=password, port=port)

stdin, stdout, stderr = ssh.exec_command("uptime")
stdin.flush()
result = stdout.read().splitlines()
print(result)

stdin, stdout, stderr = ssh.exec_command('su')
stdin.write(password + "\n")
stdin.flush()
result = stdout.read().splitlines()
print(result)

stdin, stdout, stderr = ssh.exec_command('ls /var/lib/nxserver/db')
stdin.flush()
result = stdout.read().splitlines()
print(result)

ssh.close()

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

Пробовал и такой вариант:

Код:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(...)

channel = сlient.get_transport().open_session()
channel.get_pty()
channel.settimeout(5)
channel.exec_command('su')
channel.send(password+'\n')
channel.exec_command('ls /var/lib/nxserver/db')
print channel.recv(1024)

channel.close()
client.close()

Тоже не прокатывает, выводит значение пароля почему-то.

Собственно может кто-то подсказать, помочь в решении данной задачи?

Пока буду своими силами пытаться побороть эту проблему.
artems67 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Под Подключение к MySQL через SSH в Delphi 10 Seattle kirik1901 Работа с сетью в Delphi 3 06.06.2016 05:02
Подключение к серверу через SSH sergei92 C++ Builder 0 14.12.2015 11:45
Удаленый доступ к серверу через ssh Ol'ga Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 2 18.09.2014 12:40
Подключение к MySQL через SSH TaTT DoGG C# (си шарп) 0 23.04.2011 00:14