Pexpect는 ssh, ftp, passwd, telnet 등과 같은 명령줄 명령과 상호 작용하는 데 사용할 수 있는 순수 Python 모듈입니다. 특히 Linux 시스템에서 사용하기 쉽습니다. 명령줄을 자세히 살펴보겠습니다. Python 설치용 기본 튜토리얼:
1. 설치
1. easy_install 도구 설치
wget http://peak.telecommunity.com/dist/ez_setup.py🎜>
python ez_setup.py는 easy_install 도구를 설치합니다(이 스크립트는 자동으로 공식 웹사이트로 이동하여 검색, 다운로드 및 설치합니다)
python ez_setup.py -U setuptools
easy_install 도구 업그레이드
2. pexpect 설치easy_install Pexpect
테스트해 보세요.
ok 설치가 완료되었습니다.
2. 기본 사용법
1.run() 함수
run 함수는 상대적으로 간단하며 간단한 상호작용만 가능합니다
코드는 다음과 같습니다.
run(command,timeout=-1,withexitstatus =False,events= None, extra_args=None, logfile=None, cwd=None, env=None)
예:
[root@OMS python]# python Python 2.7.3rc1 (default, Nov 7 2012, 15:03:45) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pexpect >>> import pxssh >>>2.spawn 클래스
spawn 함수는 다음과 같습니다. 실행보다 더 강력하고 더 복잡하게 구현될 수 있습니다. 상호 작용
pexpect.run('ls -la') # 返回值(输出,退出状态) (command_output, exitstatus) = pexpect.run('ls -l /bin', withexitstatus=1)
timeout은 상호 작용을 기다리는 시간 초과 값을 지정합니다.
maxread는 읽기를 설정합니다. pexpect가 TTY(Teletype 터미널)에서 읽으려고 할 때마다
searchwindowsize에서 읽은 최대 바이트 수는 입력 버퍼에서 패턴 일치 위치를 지정하며 기본값은 처음부터 일치하는 것입니다. ;
logfile 매개변수는 로그 기록 위치를 지정합니다.
작업 프로세스:class spawn __init__(self, command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None)3.pxssh 클래스
pxssh는 pexpect의 파생 클래스입니다. SSH 연결을 설정하는 것이 예상보다 사용하기 쉽습니다.
login()은 대상 시스템에 대한 SSH 연결을 설정합니다.
prompt()는 일반적으로 명령 실행이 완료될 때까지 기다리는 데 사용됩니다.
3. 예시
원격 서버에 명령을 보내고 결과를 반환하는 스크립트를 작성하세요.
스크립트 내용:
# 第一步与终端建立连接 child = pexpect.spawn('scp foo user@example.com:.') # 第二步等待终端返回特定内容 child.expect('Password:') # 第三步根据返回内容发送命令进行交互 child.sendline(mypassword)
사용법:
#!/usr/bin/python #2013-01-16 by larry import pexpect def login(port,user,passwd,ip,command): child=pexpect.spawn('ssh -p%s %s@%s "%s"' %(port,user,ip,command)) o='' try: i=child.expect(['[Pp]assword:','continue connecting (yes/no)?']) if i == 0: child.sendline(passwd) elif i == 1: child.sendline('yes') else: pass except pexpect.EOF: child.close() else: o=child.read() child.expect(pexpect.EOF) child.close() return o hosts=file('hosts.list','r') for line in hosts.readlines(): host=line.strip("\n") if host: ip,port,user,passwd,commands= host.split(":") for command in commands.split(","): print "+++++++++++++++ %s run:%s ++++++++++++" % (ip,command), print login(port,user,passwd,ip,command) hosts.close()
Host.list 파일의 내용은 다음과 같습니다.
python scripts.py
반환 결과:
192.168.0.21:22999:root:123456:cat /etc/redhat-release,df -Th,whoami 192.168.0.21:22999:root:123456:cat /etc/redhat-release,df -Th,whoami
Python 설치 및 명령줄 대화형 모듈 pexpect 사용과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!