2010-07-14 3 views
0

pexpect 모듈에서 re.findall을 시뮬레이션 할 수 있습니까?Python : Pexpect 모듈에서 re.findall 시뮬레이션

현재 ssh가 pexpect를 사용하여 서버에 들어있는 스크립트가 있습니다.

JUNK JUNK JUNK IP ADDRESS 10.0.0.1 JUNK JUNK 
JUNK IP ADDRESS 10.0.0.3 JUNK JUNK JUNK 
JUNK JUNK JUNK 
IP ADDRESS 10.0.0.2 JUNK JUNK JUNK JUNK 

참고 : 나는 예에 사용 된 IP 주소를 내가 사용하는 임의 것들 그때는 (p는 pexpect 산란되는) p.before에서 라인의 무리를 반환하는 서버에 명령을 보내 이 예제를 위해서. 실제 스크립트에서는 모든 IP 주소가 될 수 있습니다. 내가 찾으려고 노력하는 정보는 IP 주소입니다.

pexpect는 re.findall과 같은 기능을 수행 할 수 있습니까? 또는 re.findall(regex, p.before을해야합니까?)

답변

0

searcher_re을 서브 클래 싱하고 서브 클래스의 인스턴스를 expect_loop으로 호출하여 search 메서드를 재정의하면 원하는 것을 해킹 할 수 있다고 생각합니다.

당신이 지금 사용하고있는 무엇이든을위한 메인 검색을 수행하기 전에, 당신은 IP 식별 RE에 대한 버퍼에서 findall을 수행 할 수 있고, 자신의 인스턴스 변수에 그 결과를 누적 할 수 있습니다. 따라서 pexpect.expect_loop이 반환되면 인스턴스의 해당 변수에 찾고있는 "추가 정보"가 생깁니다.

약간의 시행 착오가 있었으면 좋았을 것 같습니다. 언급 한 직접적인 접근보다 기대했던 이점을 (비슷한 목적으로 다른 해킹으로) 예상하지 못합니다. , 즉 pexpect의 기계를 망쳐 놓지 않고 직접 re.findall을 사용하여 설명하십시오.

관련 문제