Cisco 라우터에 텔넷 연결을 시도하고 pexpect를 사용하여 명령을 보내려고합니다. 작동하지만 sendline()은 출력에서 반복됩니다. setecho를 False로 사용한 후에도 마찬가지입니다. 코드는 다음과 같습니다pexpect setecho가 작동하지 않음
'''
Created on Nov 19, 2012
@author: Amit Barik
'''
import pexpect
hostname = 'hostname'
login_cmd = 'telnet ' + hostname + '.net'
username = 'username'
password = 'pwd'
prompt = hostname + '#'
p = pexpect.spawn(login_cmd)
p.setecho(False)
p.logfile = open('Log.log', 'w+')
p.expect('Username:')
print '1',repr(p.before)
p.sendline(username)
p.expect('Password:')
print '2',repr(p.before)
p.sendline(password)
p.expect(prompt)
print '3',repr(p.before)
cmd = 'show clock'
p.sendline(cmd)
p.expect(prompt)
print 'Output for {0}'.format(cmd), repr(p.before)
출력은 다음과 같습니다 그래서
# On Python Console
Output for show clock 'show clock\r\n00:16:40.692 UTC Tue Nov 20 2012\r\n'
# On Log File
Username: username
username
Password: pwd
My Cisco Banner
hostname#show clock
show clock
00:16:40.692 UTC Tue Nov 20 2012
hostname#
이해하신 것 같습니다. 예제를 제공해 줄 수 있습니까? 명시 적으로'logfile_read()'를 호출합니까? 아니면 그냥 함수를 무언가로 설정하고'pexpect'가 그 메소드를 호출 할 것인가? – Johnston