zoukankan      html  css  js  c++  java
  • 模拟ssh远程执行命令-代码实现

    服务端:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import socket
    import subprocess

    phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) # 端口复用
    phone.bind(('127.0.0.1', 8090))
    phone.listen(10)
    while True: # 连接循环
    connt , client = phone.accept()
    print('starting ....')
    print(client)

    while True: # 通信循环
    try:
    # 1.收到命令:
    cmd = connt.recv(1024)
    if not cmd :continue # 适用于Linux 操作系统

    # 2.执行命令:
    ojb = subprocess.Popen(cmd.decode('utf-8'),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

    # 3.返回命令结果给客户端:
    stdout = ojb.stdout.read()
    stderr = ojb.stderr.read()
    connt.send(stdout+stderr)
    except ConnectionResetError: # 适用于windows操作系统
    break

    connt.close()
    phone.close()

    客户端:

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

    phone1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    phone1.connect(('127.0.0.1',8090))
    while True:
    cmd = input('>>>:').strip()
    if not cmd:continue
    phone1.send(cmd.encode('utf-8'))
    data1 =phone1.recv(1024)
    print(data1.decode('gbk')) # windows 默认编码是gbk linux 默认编码是 utf-8

    phone1.close()
  • 相关阅读:
    计算机的基本存储单位
    挖坑
    HEOI2017 游记
    bzoj4815 [Cqoi2017]小Q的表格
    bzoj4817 [Sdoi2017]树点涂色
    hdu5824 graph
    4.5&4.7联考题解
    高飞
    无题
    51Nod 算法马拉松23 开黑记
  • 原文地址:https://www.cnblogs.com/kingforn/p/11400220.html
Copyright © 2011-2022 走看看