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()
相关推荐
Winterto0 2020-01-18
yuuuuy 2020-01-06
Laozizuiku 2019-12-06
codeAB 2019-10-20
oXiRiShi 2019-03-26
paopao00 2019-07-01
youandme 2019-07-01
PythonGCS 2018-05-12
jerry0 2018-05-11
dingwun 2020-11-16
赵家小少爷 2020-05-06
lhxxhl 2020-04-21
kkpiece 2020-03-03
skdzyl 2020-03-01
mieleizhi0 2020-03-01
猛禽的编程艺术 2020-02-02
onetozero 2019-12-30
赵家小少爷 2019-12-09