Pexpect 라이브러리의 간단한 학습

  • Pexpect 라이브러리의 간단한 학습
  • 1. 간단한 소개 및 설치
  • 2. 기본 사용 절차
  • 셋째, API
  • 1、spawn()
  • 2、expect()

  • 참조 문서

  • Pexpect 라이브러리의 간단한 학습
    1. 간단한 소개 및 설치
  • expect는 주로 인간 대화를 모의하는 데 사용되는데 쉽게 말하면 정규 매칭 포착 시스템의 질문(예를 들어 rm 조작의 확인, ssh 로그인은 비밀번호를 입력해야 함)을 사용할 수 있고 포착된 질문에 따라 서로 다른 조작을 할 수 있다.
  • pexpect는 Python 언어의 클래스 Expect 구현입니다.
  • 설치: pip install pexpect
  • 2. 기본 사용 절차
    pexpect의 실행 절차는 사실 3단계입니다. - 우선spawn으로 프로그램을 실행합니다. - expect로 지정한 키워드를 기다립니다. 이 키워드는 실행된 프로그램이 표준 출력에 출력된 것입니다. 즉, 컴퓨터가 당신에게 물어볼 것입니다. - 어떤 키워드를 발견하면 어떤 작업에 들어가고,작업이 끝난 후 순환을 종료하거나 다음 expect로 이동합니다.
    간단한 예를 들어 ftp의 연결 (코드 출처).
    # -*- coding:utf-8 -*-
    from __future__ import absolute_import
    from __future__ import print_function
    from __future__ import unicode_literals
    
    import pexpect
    import sys
    
    #  spawn       
    child = pexpect.spawn('ftp ftp.openbsd.org')
    #  expect        ’name‘
    child.expect('(?i)name .*: ')
    #         ,       name
    child.sendline('anonymous')
    #  expect        ’password‘
    child.expect('(?i)password')
    #         ,       password
    child.sendline('[email protected]')
    #  expect        ’ftp>‘
    child.expect('ftp> ')
    #         ,       ftp  ,       
    child.sendline('cd /pub/OpenBSD/3.7/packages/i386')
    child.expect('ftp> ')
    child.sendline('bin')
    child.expect('ftp> ')
    child.sendline('prompt')
    child.expect('ftp> ')
    child.sendline('pwd')
    child.expect('ftp> ')
    print("Escape character is '^]'.
    "
    ) sys.stdout.write (child.after) sys.stdout.flush() child.interact() # Escape character defaults to ^] # At this point this script blocks until the user presses the escape character # or until the child exits. The human user and the child should be talking # to each other now. # At this point the script is running again. print('Left interactve mode.') # The rest is not strictly necessary. This just demonstrates a few functions. # This makes sure the child is dead; although it would be killed when Python exits. if child.isalive(): child.sendline('bye') # Try to ask ftp child to exit. child.close() # Print the final state of the child. Normally isalive() should be FALSE. if child.isalive(): print('Child did not exit gracefully.') else: print('Child exited gracefully.')

    3. API
    1、spawn()
    spawn () 은 프로그램의 조작 핸들을 되돌려 주는 프로그램을 실행합니다.
    process = pexpect.spawn('ftp sw-ftp')

    spawn () 은 두 가지 호출 방식이 있습니다
  • 매개 변수를 전달하고 매개 변수가 실행될 명령 문자열
  • process = pexpect.spawn('ftp sw-ftp')
  • 두 개의 매개 변수를 전달하는데 첫 번째 매개 변수는 메인 프로그램이고 두 번째 매개 변수는 메인 프로그램의 매개 변수
  • cmd = 'ftp sw-ftp'
    process = pexpect.spawn('/bin/bash', ["-c", cmd])

    두 번째 호출 방식을 사용하는 것을 추천합니다. 코드가 복잡해 보이지만, 명령줄이 실행될 때 특수 문자 '*' 가 나오는 등 몇 가지 일을 피할 수 있습니다.
    예를 들어: 현재 디렉터리에서 시작하는 파일 정보를 찾고 싶습니다
  • 첫 번째 방법 사용
  • process = pexpect.spawn('ls ta*')

    실행하면 이 오류가 터질 겁니다.
    pexpect.exceptions.EOF: End Of File (EOF). Exception style platform.
  • 두 번째 방법 사용
  • cmd = 'ls ta*'
    process = pexpect.spawn('/bin/bash', ['-c', cmd])

    결과가 정상적으로 집행되다.
    spawn은 명령을 전달하는 두 가지 방법 외에도 키워드 인자가 있습니다. 예를 들어 - timeout 시간 초과 - maxread 캐시 설정 - searchwindowsize 모드 일치 한도값 - logfile 로그 파일 - env 지정 환경 변수 - cwd 지정 실행 디렉터리 - 더 많은 것은 spawn () - 실행 프로그램 참조
    2、expect()
    프로그램 핸들을 가져오면 핸들의expect () 방법을 호출하여 키워드를 찾고 키워드에 따라 다른 동작을 수행할 수 있습니다. TAT
    참조 문서
    Pexpect 모듈 사용 설명 탐색 Pexpect, 섹션 1: Pexpect Pexpect version 4.6 분석

    좋은 웹페이지 즐겨찾기