Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Pexpect not catching embeded ssh response
#1
Hi everybody,
I was used to Bash + TCL + Expect but I migrated to Python + Pexpect and I'm encountering a little problem. I'm running python 3.6 with pexpect 4 in an ubuntu minimal vm. I'm spawning a child process to a proxy ssh machine and then trying to ssh again other hosts (this is in the aim of testing accesibility + accounts configurated after some network changes we hve to do). Problem is that pexpect library won't catch the second password prompt. I can login to the proxy ssh server but I can't "jump" to other machines. This is my script:

from __future__ import unicode_literals
import pexpect
import getpass

#username = input('Please enter your username:')
username = 'XXX'
password = getpass.getpass('Please enter your Password:')
username_AAA = input('Please enter your AAA username:')
password_AAA = getpass.getpass('Please enter your AAA Password:')

print('connecting to XXX')
log_file = open('log_aaa.txt', 'wb')
child = pexpect.spawn('ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ' + username + '@XX.XXX.XX.XX', timeout=60)
child.logfile_read = log_file
child.expect('password:')
child.sendline(password)
child.expect('$')
print('Pinging AAA1 and AAA2 \n\n')
child.sendline('ping XX.XX.XX.XX -c 10')
child.expect('$')
child.sendline('ping XX.X.X.X -c 10')
child.expect('$')
print('Connecting to AAA1 and AAA2 to test connectivity \n\n')
child.sendline('ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ' + username_AAA + '@X.X.X.X')
try:
    child.expect('password:')
except pexpect.TIMEOUT:
    raise OurException("Did not catch the pattern")
child.sendline(password_AAA)
# Script goes on a little bit to parse logs but it does not matter
I've done the same process of jumping from the proxy to other servers manually and of course it works. Password prompt received from other servers in proxy ssh server is like this:
Output:
Warning: Permanently added 'X.X.X.X' (RSA) to the list of known hosts. BLA-BLA-BLA@X.X.X.X's password:
But "password:" does not get matched Sad Well I'm not very experienced in Python nor Pexpect so I'm looking for some help, guidance... If someone can give a clue I would really appreciate it.
Thanks for your time Smile .
Regards,
Luis

UPDATE:
Well I changed the following line:
child.logfile_read = log_file
for:
child.logfile = log_file
So I get everything the script does. It seems it catches the pattern and sends the commands, passwords and all that. Thing is that spawn child process does not catch the output of the second ssh session (embedded one) and as a consequence nothing is written on the log file.
So I change my question: Does anyone know how to make th spawn child process to catch the output from and embedded ssh session? Smile Smile
Haha thanks in advance for your time.
Regards,
Luis
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  Collecting Output from Pexpect gw1500se 2 122 Jun-28-2019, 11:59 AM
Last Post: gw1500se
  Dialup Modem using pyserial - Need it to show response from the other end. Rython 1 253 Jun-20-2019, 10:09 PM
Last Post: roy
  Extra Argument In Help Response z3driver 3 143 Jun-19-2019, 07:34 PM
Last Post: z3driver
  Parsing Soap XML response grootkarzijn 7 299 Jun-14-2019, 01:30 AM
Last Post: snippsat
  Pexpect baby steps slouw 9 294 May-23-2019, 10:21 AM
Last Post: heiner55
  Pexpect module first step slouw 1 124 May-21-2019, 12:19 PM
Last Post: buran
  Catching Errors Alienspecimen 1 140 May-18-2019, 11:07 PM
Last Post: Larz60+
  Issues parsing the response from a request garnold 3 238 May-14-2019, 12:39 PM
Last Post: snippsat
  HTTP response capturing issue miunika 1 178 Mar-16-2019, 01:46 PM
Last Post: Larz60+
  HTTP response capturing issue anna 2 220 Mar-15-2019, 03:08 PM
Last Post: Larz60+

Forum Jump:


Users browsing this thread: 1 Guest(s)