Добрый день,
Мне необходимо удаленно подключиться к серверу 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()
Тоже не прокатывает, выводит значение пароля почему-то.
Собственно может кто-то подсказать, помочь в решении данной задачи?
Пока буду своими силами пытаться побороть эту проблему.