python pexpect & pxssh с sudo и EOF

Я делаю ssh логин с помощью этого скрипта:

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

Затем я хочу запустить программу, которая в некоторых случаях может потребовать пароль sudo и в некоторых случаях может не потребоваться. Поэтому я хочу создать скрипт, который мог бы предоставить пароль sudo в тех случаях, когда это необходимо, и просто запустить программу, если sudo не задан. Я думал, что этот код может справиться:

 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 

Может ли кто-нибудь помочь с кодовыми строками, которые могли бы правильно обрабатывать sudo?

One Solution collect form web for “python pexpect & pxssh с sudo и EOF”

спасибо, что спросил, это помогло мне.

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

 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 
  • Как запустить sudo с paramiko? (Python)
  • pip install: проверьте разрешения и владельца этого каталога
  • Ткань - sudo -u
  • Запуск скриптов на ткани с правами root
  • Несоответствие между sys.executable и sys.version в Python
  • Почему модули в PYTHONPATH не найдены, когда содержащая директория является частью PYTHONPATH, и файл существует?
  • В моем virtualenv мне нужно использовать sudo для всех команд
  • Запустите команду linux system в качестве суперпользователя, используя скрипт python
  • Python - лучший язык программирования в мире.