zoukankan      html  css  js  c++  java
  • socket实现在python中调用操作系统的命令(subprocess)

    在python中调用操作系统的命令
    import os
    import subprocess
    # r = os.popen('ipconfig')
    r = subprocess.Popen('ls',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)、
    # subprocess.Popen(cmd,shell=True,subprocess.stdout,subprocess.stderr)
    # cmd : 代表系统命令
    # shell = True   代表这条命令是 系统命令,告诉操作系统,将cmd当成系统命令去执行
    # stdout   是执行完系统命令之后,用于保存结果的一个管道
    # stderr   是执行完系统命令之后,用于保存错误结果的一个管道
    stdout = r.stdout.read().decode('gbk')
    stderr = r.stderr.read().decode('gbk')
    print('正确的返回结果:',stdout)
    print('错误的返回结果:',stderr)
    print('错误的返回结果:',stderr)            #保存变量的方法使得能得到两个错误的信息,否则只能得到一次错误的结果
    
    
    #客户端发送一条命令用于调用服务器的系统命令
        # 客户端发送要执行命令
        # 服务器执行,执行完将结果返回给客户端
        # 客户端拿到结果呈现到用户眼前
    #server层
    import socket
    import subprocess
    sk = socket.socket()
    sk.bind(('127.0.0.1',8080))
    sk.listen()
    conn,addr = sk.accept()
    while 1:
        cmd = conn.recv(1024).decode('utf-8')
        r = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        stdout = r.stdout.read()
        stderr = r.stderr.read()
        if stderr:
            conn.send(stderr)
        else:
            conn.send(stdout)
    conn.close()
    sk.close()
    
    #client层
    import socket
    sk = socket.socket()
    sk.connect_ex(('127.0.0.1',8080))
    while 1:
        cmd = input('请输入一个命令>>>')
        sk.send(cmd.encode('utf-8'))
        #因为服务器是windows,执行的命令是GBK格式,所以传回来后需要进行解码,解码为GBK格式
        result = sk.recv(102400).decode('gbk')
        print(result)
    sk.close()
  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/11719027.html
Copyright © 2011-2022 走看看