Как сделать команду sudo, используя Paramiko - PullRequest
5 голосов
/ 08 февраля 2011

У меня проблемы с командами, которые используют sudo с использованием paramiko
f.ex sudo apt-get update

вот мой код:

try:
    import paramiko
except:
    try:
        import paramiko
    except:
        print "There was an error with the paramiko module"
cmd = "sudo apt-get update"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    ssh.connect("ip",username="lexel",password="password")
    print "succesfully conected"
except:
    print "There was an Error conecting"
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('password\n')
stdin.flush()
print stderr.readlines()
print stdout.readlines()

Это быстрыйкод.Я знаю, что мне нужно добавить sys.exit (1) и все такое, но это только для демонстрации

Я использовал это для справки: Jessenoller.com

Ответы [ 2 ]

1 голос
/ 23 октября 2013

У меня возникла та же проблема, и я исправляю это:

В вашем файле sudo просто добавьте:

По умолчанию: ваше_имя_пользователя! Requiretty

или удалитеЗначения по умолчанию requiretty.

Также убедитесь, что у вашего пользователя есть разрешение на запуск команды с помощью sudo.

1 голос
/ 28 сентября 2011

Fabric имеет команду sudo.Он использует Paramico для соединений SSH.Ваш код будет:

#fabfile.py
from fabric.api import run, sudo

def update():
    """Run `sudo apt-get update`.

    lorem ipsum
    """
    sudo("apt-get update")

def hostname():
    """Run `hostname`"""
    run("hostname")

Использование:

$ fab update -H example.com
[example.com] Executing task 'update'
[example.com] sudo: apt-get update
...snip...
[example.com] out: Reading package lists... Done
[example.com] out: 

Done.
Disconnecting from example.com... done.

$ fab --display update
Displaying detailed information for task 'update':

    Run `sudo apt-get update`.

        lorem ipsum

$ fab --list
Available commands:

    hostname  Run `hostname`
    update    Run `sudo apt-get update`.

С документы :

В дополнение к использованию черезfab tool, компоненты Fabric могут быть импортированы в другой код Python, предоставляя Pythonic интерфейс для набора протоколов SSH на более высоком уровне, чем, например, предоставляемый, например, Paramiko (который использует сама Fabric).

...