zoukankan      html  css  js  c++  java
  • Python socket模拟ssh功能

    server端:

      

    #!/usr/bin/env python2.7
    # -*- coding: utf-8 -*-
    import socket
    import subprocess
    sk = socket.socket()
    sk.bind(("127.0.0.1", 9000))
    sk.listen(5)
    while True:
        print "Sever Listening..."
        conn, addr = sk.accept()
        while True:
            accept_data = conn.recv(1024)
            if not accept_data:break
            print "recv cmd: ",accept_data
            cmd = accept_data.strip()
            exec_result = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
            cmd_resule = exec_result.stdout.read()
            if len(cmd_resule) ==0:
                 cmd_resule = "command error"
            ack_msg = "Size|%s" %str(len(cmd_resule))
            conn.send(ack_msg)
            conn.send(cmd_resule)
        conn.close()

    client端:

    #!/usr/bin/env python2.7
    # -*- coding: utf-8 -*-
    import socket
    
    sk = socket.socket()
    sk.connect(("127.0.0.1", 9000))
    while True:
        data_input = raw_input("cmd: ").strip()
        if len(data_input) == 0:continue
        if data_input == 'q':break
        sk.sendall(data_input)
        server_ack_msg = sk.recv(100)
        cmd_res_msg = str(server_ack_msg).split("|")
        print cmd_res_msg
        if cmd_res_msg[0] == "Size":
           cmd_res_size = int(cmd_res_msg[1])
        res = ""
        received_size = 0
        while received_size < cmd_res_size:
            data = sk.recv(500)
            received_size += len(data)
            res += str(data)
        else:
            print "-----recv done------"
            print res
    sk.close()
  • 相关阅读:
    MultipartFile(文件的上传)
    JSONObject.fromObject--JSON与对象的转换
    Map集合与转化
    java读取excel文件
    Java中的Arrays类使用详解
    Arrays 类的 binarySearch() 数组查询方法详解
    JDK8 特性详解
    关于Java堆、栈和常量池的详解
    深入java final关键字
    杯酒人生
  • 原文地址:https://www.cnblogs.com/sjie0224/p/7598650.html
Copyright © 2011-2022 走看看