케이스 파이썬 원격 명령 실행

------ 유사한 cmd를의 기능, 클라이언트 실행 서버 에 지휘 결과를 클라이언트

----------- server.py -------------------

서브 프로세스 오기 
#의 subprocess.Popen은 주로이 클래스가 구현 쉘는 popen

오기 소켓
SK = socket.socket ()
인쇄 (SK)
어드레스 = ( '127.0.0.1', 8003)
sk.bind (어드레스)
sk.listen. (3)
인쇄 ( '..... 대기')
는 true 동안 :
코네티컷, ADDR = sk.accept ()
인쇄 (요지)
는 true 동안 :
은 try :
데이터 = conn.recv (1024)
예외를 제외하고 :
BREAK
하지 않을 경우 데이터 : BREAK의
인쇄 ( '.....', STR (데이터 'UTF8'))
OBJ = subprocess.Popen (STR (데이터 'UTF8'), 쉘 = TRUE, subprocess.PIPE = 표준 출력)
# = 표준 출력 표시 subprocess.PIPE 동시 프로세스에 의해 파이프 라인을 통해 자녀가 내 주요 공정에 가서에서 개체의 OBJ 패키지
     ---- 즉,이 라인의 기능입니다이 줄은 것입니다클라이언트 솔루션 밖으로 명령이 전송 결과
        = obj.stdout.read cmd_result ()
result_len 바이트 = (STR (LEN (cmd_result)) 'UTF8') # 크기는 계산
conn.sendall (result_len)이 도면의 전달 클라이언트 # 크기

conn.recv (1024 )

conn.sendall (바이트 (cmd_result))
sk.close ()


----------------------------- client.py --- ----------------------------
수입 소켓 
SK = socket.socket ()
인쇄 (SK)이
= ( '127.0.0.1', 8003) 해결
sk.connect (주소)
진정한 동안을 :
INP = 입력 ( '>>>')
INP는 == '출구'경우 :
브레이크
sk.send (바이트 (INP 'UTF8'))

result_len = INT (STR (sk.recv (1024), 'UTF8'))

sk.sendall (바이트 ( '111', 'UTF8'))

프린트 ( result_len)
데이터 바이트 = ()
동안 LEN (데이터) = result_len!
RECV sk.recv = (1,024)
데이터 + = RECV 용

잉크 (STR (데이터 'GBK'))
sk.close ()를


아래와 같이 결과 : 에서 클라이언트가 수행하는 디렉토리를 하고 ipconfig를은 결과를 얻을 명령






추천

출처www.cnblogs.com/dbslinux/p/11239650.html