아날로그 SSH 원격 명령 실행

서버 :

수입 소켓 
오기 구성 프로세스
전화 = socket.socket (socket.AF_INET , socket.SOCK_STREAM)
phone.setsockopt (socket.SOL_SOCKET , socket.SO_REUSEADDR , 1) #可以重复适用系统端口
phone.bind (( "192.168.43.14" , 8081 ))
phone.listen ( 5)
트루 동안 :
CONN , clent_add phone.accept = ()
동안 참 :
시도 :
1接受命令
데이터를 conn.recv = ( 1,024)
OBJ = subprocess.Popen (data.decode ( "UTF- 8 ') , 쉘 = 참, 표준 출력 = subprocess.PIPE , 열려진 = subprocess.PIPE)
표준 출력 obj.stdout.read = ()
= obj.stderr.read 표준 에러 ()
되지 않은 데이터의 #if : 클라이언트가 응답하지 않는 경우 #의 BREAK는,이 방법은 리눅스 운영 체제에 적합한
#Print ((data.decode '. UTF-8'))
# 2를 실행 얻을 결과
클라이언트로 전송 명령을 실행 # 3을 당겨 찾기
conn.send (표준 출력 + 표준 에러) + "여기 최적화를 계속할 수 # 제외를 ConnectionResetError : 클라이언트가 전화를 끊으면 #을,이 방법은 시스템의 운영 창문 적합 브레이크 ) (conn.Close를 전화 .close ()








클라이언트 :

소켓 가져 오기 
전화 = socket.socket (socket.AF_INET , socket.SOCK_STREAM)
phone.connect (( '192.168.43.14' , 8081))
는 true 동안 :
MSG = INPUT ( 스트립 () '>>>'.)
IF하지 MSG : 계속하지 서버에 보낼 수없는 경우, 입력이 비어되면 응용 프로그램 계층이받을 수있는 반면, #,하지만 응용 계층에 운영 시스템은 더있다
# 지휘
phone.send을 ((msg.encode를 ) 'UTF-8.')
#을 실행하고 결과 전송
데이터 = phone.recv을 ( 1024) 거대한 구멍이 # 1024 인쇄 (data.decode ( 'GBK')) phone.close ()




추가 내용 :

수입 운영 체제의
고해상도 = os.system을 ( '디렉토리')
인쇄 (고해상도)


# 가져 오기 서브 프로세스
OBJ = subprocess.Popen를 ( 'dffif /', 쉘 = True로, 표준 출력 = subprocess.PIPE, 열려진 = subprocess.PIPE) #
# 인쇄 ( '正确管道'obj.stdout.read (). ( 'GBK')) 디코딩
# 인쇄 ( '错误管道'obj.stderr.read (). 디코딩 ( 'GBK'))

추천

출처www.cnblogs.com/yuexijun/p/11408785.html