문제

I make ssh login with this script:

import pxssh
import pexpect

s = pxssh.pxssh()
hostname = 'localhost'
username = 'py_worker'
password = 'nicejob'
s.login (hostname, username, password)
print "logged in"

Then I want to run some program which in some case may require sudo password and in some case may not require. So I want a scrip which could provide sudo password in those cases when required and just run the program if sudo is not asked. I thought this code could handle:

s.sendline('sudo apt-get check')
i=s.expect(['password', pexpect.EOF])
if i==0:
    print "I give password"
    s.sendline("nicejob")
    s.prompt()
elif i==1:
    print "EOF cought"
    s.prompt()
print s.before

Could someone help with code lines which could handle sudo correctly?

도움이 되었습니까?

해결책

thanks for asking this, it helped me.

youll probably need to flesh out the exceptions and re for the rootprompt but here you go.

def sudo(s,password):
    rootprompt = re.compile('.*[$#]')
    s.sendline('sudo -s')
    i = s.expect([rootprompt,'assword.*: '])
    if i==0:
        print "didnt need password!"
        pass
    elif i==1:
        print "sending password"
        s.sendline(password)
        j = s.expect([rootprompt,'Sorry, try again'])
        if j == 0:
            pass
        elif j == 1:
            raise Exception("bad password")
    else:
        raise Exception("unexpected output")
    s.set_unique_promp
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top