socket实现在python中调用操作系统的命令(subprocess)

Posted LBC不认输

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

 

以上是关于socket实现在python中调用操作系统的命令(subprocess)的主要内容,如果未能解决你的问题,请参考以下文章

Socket与系统调用深度分析

使用python完成一个hello/hi的简单的网络聊天程序

python socket怎么调用不了

python实现系统脚本命令调用模块---subprocess模块

socket模拟实现ssh远程执行命令(Python)

python_day9_socket