python----基于TCP+subprocess远程连接
一 * 远程执行命令的程序
1.subprocess 模块
shell=True 告诉系统把次命令作为系统命令执行
stdout = subprocess.PIPE 输出
stderr = subprocess.PIPE 错误信息
win系统编码 gbk
内存 unicode 传输时转化为utf-8 pycharm utf-8
2.TCP介绍
基于TCP是不允许发空消息的会发生粘包
回车时不发任何消息就会发生卡住,如果是空格的话会发生no
解决办法就是直接限制
TCP命令程序的创建



3.重写socket

2.#重写socket之后的udp server端
tu_server.py
sk=Mysocket()
sk.bind(("127.0.0.1",9090))
while True:
msg,addr=sk.myrecv(1024)
print(msg,addr)
s=input(">>>")
sk.mysent(s,addr)
sk.close()
3.#重写socket之后的udp client客户端
tu_client.py
sk=Mysocket()
while True:
s=input(">>>")
sk.mysent(s,("127.0.0.1",9090))
msg,addr=sk.myrecv(1024)
print(msg,addr)
sk.close()
4.远程操控系统命令
import os
import subprocess
#os系统模块里面的方法popen可以接收执行系统命令dir展示目录calc计算机 mspaint画图工具
obj=os.popen("mspaint")
print(obj.read())
5.#subprocess模块远程执行命令相当于os.popen但是比较强大可以调用系统命令
#将shell设置为True告诉系统把subprocess.Popen命令作为系统命令windows来执行
"""
stdout=subprocess.PIPE输出信息
stderr=subprocess.PIPE输出错误信息
PIPE管道
"""
以下是代码演示:
s=subprocess.Popen("dir",shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
print("stdout1*", s.stdout.read().decode("gbk"))
print("stderr*" , s.stderr.read().decode("gbk"))
print("stdout2*", s.stdout.read().decode("gbk"))
7.基于TCP的socket和subprocess执行远程系统命令

