python 은 윈도 우 를 통 해 리 눅 스 시스템 을 원 격 으로 제어 합 니 다.

1.학습 목표
[Windows 에서 원 격 으로 Linux 시스템 을 제어 하여 socket 모듈 에 대한 인식 을 실현 합 니 다]
실험 환경
Windows 에서(아 날로 그 클 라 이언 트[IP:192.168.43.77]):python 3.6
Linux 에서(아 날로 그 서버[IP:192.168.43.226]):python 2.7
전제 조건
둘 다 핑 통 할 수 있다.
서버 방화벽 닫 기
코드
서버 코드(server.py):

#!/usr/bin/env python
#coding:utf-8

import socket
import os

HOST = "192.168.43.226"
PORT = 5000
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
addr = (HOST,PORT)
s.bind(addr)       #     
s.listen(1)       #     
conn,addr = s.accept()  #       
print(addr)       #      IP

def get_client_file():   #            
  conn.send("Ready to receive!")
  data = conn.recv(20480) #         
  print(data)
  with open("clientFile.txt",'wb') as f:
    f.write(data)
  conn.close()

def send_server_file():   #            
  c_filepath = conn.recv(1024) #          
  with open(c_filepath,'rb') as f:
    data = f.read()
    conn.sendall(data)
    conn.close()

def main():
  while True:
    cmd = conn.recv(1024)
    print(cmd) #        
    if cmd == "q":
      break
    if cmd == "transdata":
      get_client_file()  #        
      break
    if cmd == "recvdata":
      send_server_file() #        
      break    
    data = os.popen(cmd)  #        
    sdata = data.read()   
    if sdata:
      conn.sendall(sdata)
    else:
      conn.send("finish")     
  conn.close()  
  s.close()  
if __name__ == "__main__":
  main()
클 라 이언 트(client.py):

import socket

HOST = "192.168.43.226"
PORT = 5000
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
addr = ((HOST,PORT))
c.connect(addr)     #      

def send_client_file(): #            
  data = c.recv(1024)   #         
  print(data)       
  c_filepath = input("Please enter the client file path:")
  with open(c_filepath,"rb") as f:
    file = f.read()   #  byte        
  c.sendall(file)     #            

def get_server_file():   #            
  s_filepath = input("Please enter the server file path:")
  c.send(bytes(s_filepath,encoding='gbk'))
  data = c.recv(20480)  #          
  with open("shadow.txt","wb") as f:
    f.write(data)

def main():

  while True:
    cmd = input("Plsase input a command:")
    c.send(bytes(cmd,encoding="gbk"))  #     
    if cmd == "q":
      break
    if cmd == "transdata":   #            
      send_client_file()
      break
    if cmd == "recvdata":    #            
      get_server_file()
      break
    data = c.recv(20480)
    print(data)
  c.close()

if __name__ =="__main__":
  main()
5.테스트 결과(서버 shadow 파일 테스트 가 져 오기)
windows 에서 client.py 파일 을 실행 합 니 다.
>입력:recvdata
>입력:/etc/shadow

관심 있 는 친 구 는 함께 기술 을 연구 하고 토론 할 수 있 습 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기