Найти - Пользователи
Полная версия: инструмент для выполнения команд на ремоут shell
Начало » Python для экспертов » инструмент для выполнения команд на ремоут shell
1 2 3
FishHook
remoshka
говорят же вам, что НЕТ sudo на серверах.
remoshka
а потом осуществляется переход на рут.

Ну и? Вместо sudo su сделайте “а потом осуществляется переход на рут”.
Rodegast
remoshka
Rodegast
окей, сделайте это на питоне и покажите. зайдите на удаленный шелл под юзером и с помощью su root -c ‘id’ выполните id и запишите в переменную выхлоп id. НА python, а не на bash
Rodegast
> НА python, а не на bash
JOHN_16
На такой вопрос во втором же посте должно было прилететь что то типа “используй paramiko” :)
remoshka
Rodegast
> НА python, а не на bash
еще раз:
1) залогинся под юзером
2) выполни su root -c ‘id’
3) впоймай результат
4) запости сюда
i.slepov
remoshka
еще раз:
1) залогинся под юзером
2) выполни su root -c ‘id’
3) впоймай результат
4) запости сюда

remoshka вам правильно paramiko советуют.
Если охота делать а-ля bash то тогда смотри на pyexpect, кстати помогает если на серверной стороне “дурная” консоль.

import pxssh
import getpass
try:
    s = pxssh.pxssh()
    hostname = raw_input('hostname: ')
    username = raw_input('username: ')
    password = getpass.getpass('password: ')
    root_password = getpass.getpass('root password: ')
    s.login(hostname, username, password)
    s.sendline('su -')     # run a command
    s.prompt()             # match the prompt
    s.sendline(root_password)
    s.prompt()
    print(s.before)        # print everything before the prompt.
    s.sendline('ls')
    s.prompt()
    print(s.before)
    s.sendline('exit')
    s.prompt()
    s.logout()
except pxssh.ExceptionPxssh as e:
    print("pxssh failed on login.")
    print(e)
Rodegast
> На такой вопрос во втором же посте должно было прилететь что то типа “используй paramiko”

Во втором же посте должно было быть написано “иди на гугл”.
Самая первая ссылка по запросу “python ssh”: http://habrahabr.ru/post/150047/
remoshka
я с peexpect пробовал работать.
s.sendline('ls')
s.prompt()
print(s.before)
печатает результат вместе с промпт bash'a. И кстати да, ваш экземпл таки не работает. И еще там не реализована работа по ссш же
PooH
А зачем вообще весь этот марлезонский балет? Я всегда ставлю PermitRootLogin в without-password и пробрасываю ключ.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB