Re: pexpect - logging input AND output

2014-08-20 Thread Akira Li
sj.constant...@gmail.com writes:

 i have a script running a few commands on a network device. i can't
 seem to figure out how to log both the input and output of what the
 pexpect script initiates and responds to.

 child = pexpect.spawn ('telnet '+ ip)
 child.expect ('.*:*')
 child.sendline (user)
 child.expect ('.*:*')
 child.sendline (password)
 child.expect(['.*#*', '.**'])
 child.sendline ('enable')
 child.expect (['Password:', '.*#*'])
 child.sendline (password)
 child.expect ('.*#*')
 child.sendline ('conf t')
 child.expect ('.*#*')
 child.sendline ('line vty 0 4')

 i have tried both these logging commands:

 child.logfile = open('log.txt', 'w')
 child.logfile=sys.stdout

 all i get is the input i send with expect/sendline combinations, i
 don't get any of what the device sends, only what i send the device:

 user
 password
 enable
 password
 conf t
 line vty 0 4

 any ideas of what is the correct way to go about this? just can't get the 
 output!

To be clear, expect() doesn't send anything to the device. expect()
matches as little as possible therefore '.*:*' matches *nothing*.

If it is Python 3 then use pexpect.spawnu(). Otherwise, assigning to
child.logfile should work as is.

There is a telnetlib module in stdlib. x/84 python telnet server might
contain a client too.


--
Akira

-- 
https://mail.python.org/mailman/listinfo/python-list


pexpect - logging input AND output

2014-08-14 Thread sj . constantine
i have a script running a few commands on a network device. i can't seem to 
figure out how to log both the input and output of what the pexpect script 
initiates and responds to.

child = pexpect.spawn ('telnet '+ ip)
child.expect ('.*:*')
child.sendline (user)
child.expect ('.*:*')
child.sendline (password)
child.expect(['.*#*', '.**'])
child.sendline ('enable')
child.expect (['Password:', '.*#*'])
child.sendline (password)
child.expect ('.*#*')
child.sendline ('conf t')
child.expect ('.*#*')
child.sendline ('line vty 0 4')

i have tried both these logging commands:

child.logfile = open('log.txt', 'w')
child.logfile=sys.stdout

all i get is the input i send with expect/sendline combinations, i don't get 
any of what the device sends, only what i send the device:

user
password
enable
password
conf t
line vty 0 4

any ideas of what is the correct way to go about this? just can't get the 
output!
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: pexpect - logging input AND output

2014-08-14 Thread Chris Angelico
On Thu, Aug 14, 2014 at 6:59 PM,  sj.constant...@gmail.com wrote:
 i have a script running a few commands on a network device. i can't seem to 
 figure out how to log both the input and output of what the pexpect script 
 initiates and responds to.

 child = pexpect.spawn ('telnet '+ ip)

If that's not working for you, would it be easier instead to simply
open a socket connection to port 23 on that IP address? Then you'd
just write to the socket (and log what you write) and read from it
(and log that). It's possible you'll see some TELNET or ANSI codes
coming back, but I expect you won't have to send any of them.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list