pexpect 를 이용한 ssh 접속 자동화

2016. 9. 12. 12:54·IT기술 관련/파이썬_루비 등 언어
반응형

출처: http://rose-dev.tistory.com/entry/pexpect-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-ssh-%EC%A0%91%EC%86%8D-%EC%9E%90%EB%8F%99%ED%99%94


http://rhkdvy1200.tistory.com/entry/Pexpect%EB%A1%9C-SSH-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0


0. 참고 URL

http://pexpect.readthedocs.io/en/stable/overview.html

http://www.bx.psu.edu/~nate/pexpect/pexpect.html

http://linux.die.net/man/1/expect


1. pexpect 설치


sudo easy_install pexpect

sudo pip install pexpect


* mac el capitan 버전 에서 pip install 오류가 날 때는 --ignore-installed 옵션을 붙여주세요

ex) sudo pip install --ignore-installed pexpect



2. pexpect 란


expect 란 스크립트 언어인 Tcl(Tool Command Language) 로 만든 CLI 자동화 도구이다.

pexpect 란 python 에서 사용 가능한 expect 를 말한다.


일반 shell 을 사용할 경우 consol 창에 interactive 하게 입력해야하지만 

expect 를 사용하면 화면에 특정 문자열이 출력될때까지 기다렸다가 응답하는 형태의 처리가 가능하다.

* expect 로 할 수 있는 일: ssh, scp, ftp 등 



3. pexpect 주요 메소드 

    spawn(command)

      control 을 child application 으로 넘겨줍니다.

    expect(pattern)

      화면에 pattern 에 맞는 문자열이 나올때까지 기다립니다.

    sendline(str)

      문자열을 입력합니다.

    interact()

      control 을 다시 user 로 넘겨줍니다.


4. ssh 자동 접속 예제

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pexpect
 
host = 'xx.xx.xx.xx'
name = 'username'
pwd = '********'
 
def ssh(host):
    return 'ssh %s@%s' % (name, host)
 
def wait_password(host):
    return '%s@%s\'s password:' % (name, host)
 
child = pexpect.spawn(ssh(host))
child.setwinsize(400, 400)
child.expect(wait_password(host))
child.sendline(pwd)
child.interact()
child.close()





import pexpect
PROMPT = ['# ','>>> ','> ','\$ ']

def send_command(child, cmd):
        child.sendline(cmd)
        child.expect(PROMPT)
        print child.before
def connect(user, host, password):
        ssh_newkey = 'Are you sure you want to continue connecting'
        connStr = 'ssh '+user+'@'+host
        child = pexpect.spawn(connStr)
        ret = child.expect([pexpect.TIMEOUT, ssh_newkey])
        if ret == 0:
                print '[-] Error Connecting'
                return
        if ret == 1:
                child.sendline('yes')
                ret = child.expect([pexpect.TIMEOUT, \
                '[P|p]assword:'])
                if ret == 0:
                        print '[-] Error Connecting'
                        return
                child.sendline(password)
                child.expect(PROMPT)
                return child
def main():
        host = '127.0.0.1'
        user = 'root'
        password = 'root'
        child = connect(user, host, password)
        send_command(child, 'cat /etc/shadow | grep root')
if __name__ == '__main__':
        main()


반응형
저작자표시

'IT기술 관련 > 파이썬_루비 등 언어' 카테고리의 다른 글

[python] 다른 파일에서 정의한 클래스 가져다 쓰기  (0) 2016.09.12
[wxPython] 미리 정의된 다이얼로그(Dialog)  (0) 2016.09.12
치명적 파이썬 (Violent Python) – 0×02 SSH 공격도구  (0) 2016.09.12
Python pexpect 모듈을 윈도우에서 사용하기  (0) 2016.09.12
[파이썬, Python] 하위 폴더를 포함한 파일 리스트 출력하기 예제 2.  (0) 2016.09.12
'IT기술 관련/파이썬_루비 등 언어' 카테고리의 다른 글
  • [python] 다른 파일에서 정의한 클래스 가져다 쓰기
  • [wxPython] 미리 정의된 다이얼로그(Dialog)
  • 치명적 파이썬 (Violent Python) – 0×02 SSH 공격도구
  • Python pexpect 모듈을 윈도우에서 사용하기
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    돈까스
    판교
    복리후생
    수제버거맛집
    판교맛집
    수제버거존맛
    대통령
    런치
    맛집
    무역전쟁
    마케팅
    쥬쥬랜드
    AWS
    보안가이드
    수제버거
    유니티
    판교역
    이재곧죽습니다
    점심
    상호관세
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
pexpect 를 이용한 ssh 접속 자동화
상단으로

티스토리툴바