2017-12-01 19 views
0

나는 다음과 같은 출력을 얻을 시스코 스위치에 '쇼 버전'을 실행하면 :

시스코 IOS 소프트웨어, C3750E 소프트웨어 (C3750E-UNIVERSALK9-M), 버전 12.2 (58) SE2, RELEASE 소프트웨어 (FC1) 를 기술 지원 : 시스코 시스템즈에 의해 http://www.cisco.com/techsupport 저작권 (C) 1986-2011, 주식

<이 --output 잘린

->

는 # I 스위치에 로그인 할 것으로 예상 사용하고

, 실행 show version 명령 및 그때 화면에 출력 아래의 코드를 사용 할 수있는 명령의 전체 출력과 정확한 버전, 기대 :

send "show version\n" 
expect -re "show version.*Version (.*), REL.*#$" 
send_user "Command Output:\n$expect_out(0,string)\n\n" 
send_user "Version:\n$expect_out(1,string)\n\n" 

을이 모두 OK, 그러나 지금이 사용하는 파이썬과 Pexpect을 복제하는 것을 시도하고 작동합니다. 정확한 버전을 얻을

child.sendline(show version') 
child.expect('#') 
print("\r\n","Command Output:","\r\n",child.before, sep = '') 

가 어떻게 Pexpect에 $ expect_out (1, 문자열) 복제 않습니다 : 나는 child.before를 사용하여 $의 expect_out (0, 문자열)의 등가를받을 수 있나요? 사전에

많은 감사

답변

0

Pexpect 패키지는 기대보다는 더 적은을한다, 이것은 관련 경기 개체에 노출 된 접근이 없기 때문에 그것은 매우 다른 분야 중 하나입니다.

관심있는 부분을 추출하려면 use a separate RE이 필요합니다.

import re 

child.sendline(show version') 
child.expect('#') 
print("\r\n","Command Output:","\r\n",child.before, sep = '') 

m = re.search("show version.*Version (.*), REL.", child.before) 
if m: 
    print("Version:\n" + m.group(1) + "\n\n") 
+0

정확히 내가 필요로하는 것, 많은 감사합니다. – farrier