python - pxssh를 이용한 ssh connect & send command

pxssh를 이용하면 ssh를 이용해 linux에 접속하여 직접 command를 날릴 수 있고, 반환값도 받아 올 수 있습니다.

먼저 pxssh를 이용하기위해 모듈 pexpect를 설치해줍니다.

# wget https://pypi.python.org/packages/source/p/pexpect/pexpect-4.0.1.tar.gz#md5=056df81e6ca7081f1015b4b147b977b7

# tar xvf pexpect-4.0.1.tar.gz

# cd pexpect-4.0.1.tar.gz

# python setup.py install

먼저 모듈을 아래와 같이 로드해줍니다.

from pexpect import pxssh

현재 파이썬 3.x버전을 사용하고 있으며, 간혹 책이나 튜토리얼을 보게되면

import pxssh 와 같이 선언하는 문구를 보실 수 있습니다.

그러나 위와 같이 선언시 import하지 못해 에러가 발생합니다.

s = pxssh.pxssh()를 통해 변수를 초기화 해 준 뒤 아래의 함수들을 이용하여 로그인 및 커맨드를 실행합니다.

s.login(Domain, ID, Password) - 로그인 관련 메소드로 해당 도메인에 해당 아이디와
 패스워드를 이용해 로그인 합니다.

s.sendline(Command) - 명령어를 실행하는 부분으로 Command에 입력된 명령어를 실행합니다.

s.prompt() - 실행된 명령어의 실행(return되는) 값을 받기 위해 사용합니다.

s.before.decode() - s.before에 실행된 명령어를 가지고 있고, 이를 decode()하여 출력합니다.


위와 같은 코드를 완성하였습니다.

Line 4 - 127.0.0.1 도메인으로 root/123456 으로 로그인을 시도합니다.
(로그인 관련 리턴값을 받아 올 수 있습니다.)
Line 6 - uname -v 명령어를 실행합니다.
Line 8 - 받아온 값을 출력합니다.

실행 결과는 아래와 같습니다.

----------------------------------------------------------------
# python3 pxssh.py 
uname -v
#1 SMP Tue Nov 11 17:57:25 UTC 2014
----------------------------------------------------------------