python基础之socket编程-------基于tcp的套接字实现远程执行命令的操作

远程实现cmd功能:

import socket
import subprocess
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.bind(("127.0.0.1",8080))
phone.listen(5)
print("starting....")
while True:
    conn,addr=phone.accept()
    while True:
        try:
            date=conn.recv(1024)
            s=date.decode("utf8")
            res=subprocess.Popen("%s"%(s),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,)
            if res.stdout:
                re1=res.stdout.read()
                conn.send(re1)
            if res.stderr:
                re2=res.stderr.read()
                conn.send(re2)
        except Exception:
            break
conn.close()
phone.close()

真正执行命令的服务端

import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(("127.0.0.1",8080))
while True:
    msg=input("请输入你的CMD命令:")
    if not msg:continue
    phone.send(msg.encode("utf8"))
    data=phone.recv(1024)
    print(data.decode("gbk"))
phone.close()

远程控制客户端

(莫名其妙的感觉哪里不对劲儿?)

时间: 2024-10-13 15:30:31

python基础之socket编程-------基于tcp的套接字实现远程执行命令的操作的相关文章

python基础之socket编程part2---粘包和并发

粘包现象 基于tcp的套接字实现远程执行命令的操作(1.执行错误命令.2.执行ls.3.执行ipconfig) #_*_coding:utf-8_*_ __author__ = '777' import socket import subprocess phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.bind(("127.0.0.1",8080)) phone.listen(5) print("等待命令

python基础之socket编程

python基础之socket编程   一 TCP/IP五层模型 在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的. 在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议. 各层功能 注明:ARP和RAPR两个到底属于哪一层呢? 由于IP协议使用了ARP协议,所以经常把ARP协议划到网络层,但是ARP协议是为了从网络层使用的IP地址解析出在数据链路层使用的MAC地址,所以有些地方也把ARP协议划分到数据链路层,但是一般情况下

Python 基础之socket编程(二)

Python 基础之socket编程(二) 昨天只是对socket编程做了简单的介绍,只是把socket通信的框架搭建起来,要对其中的功能进行进一步的扩充,就来看看今天的料哈! 一.基于tcp的套接字 1. tcp的服务端 ss = socket() #创建服务器套接字 ss.bind() #把地址绑定到套接字 ss.listen() #监听链接 inf_loop: #服务器无限循环 cs = ss.accept() #接受客户端链接 comm_loop: #通讯循环 cs.recv()/cs.

Python 基础之socket编程(三)

python 基础之socket编程(三) 前面实现的基于socket通信只能实现什么呢?在tcp协议的通信中就是一个用户说一句,服务端给你回一句,你再给服务端说一句,服务端再给你回一句,就这样一直友好的玩耍下去了.等等,又有一个用户来了,他呢也想和和服务端进行一下交流,于是他就给服务端发送了一条消息,之后等呀等不知过了多久,任然没有等到服务端给他发挥的消息,只有什么时候他就可以和服务端愉快的玩耍了呢?这个就需要第一个用户退出和服务器的链接,此时第二个客户端才会和服务端建立起链接,此时此刻,他才

python基础之socket编程 (转自林海峰老师)

阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 十 什么是粘包 十一 解决粘包的low比处理方法 十二 峰哥解决粘包的方法 十三 认证客户端的链接合法性 十四 socketserver实现并发 十五 作业 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B

python基础20 ------python基础之socket编程

一.C/S架构和B/S架构的简介 略 二.osi七层模型 略 三.socket层 1.如图所示: socket层是存在于应用层和传输层直接抽象出来的一层. 2.socket层是什么? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议.所以,我们无需 深入理解tcp/udp协议,socke

python基础之socket编程(TCP三次握手和四次挥手)

TCP协议中中的三次握手和四次挥手 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?简单的过程如下: [注意]中断连接端可以是Client端,也可以是Server端. 假设Client端发起中断连接请求,也就是发送FIN报

java Socket编程-基于TCP

package com.wzy.Test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; /** * * @author wzy *服务器线程

Python开发——12.socket编程

一.OSI七层 1.物理层 物理层的主要功能是基于电气特性发送高低电压(高代表1,低代表0)形成电信号,使计算机完成组网以达到接入Internet的目的 2.数据链路层 数据链路层是用来定义电信号的分组方式,使单纯的电信号0和1变得有意义 (1)以太网协议 以太网协议(ethernet)是统一的分组标准,以太网协议规定:a.一组电信号构成一个数据包,叫做"帧":b.每一数据帧分成报头head和数据data两部分 报头(head)固定为18个字节,发送者即源地址.接受者即目标地址和数据类