首页 > 其他分享 >socket实现简单ssh服务(解决socket粘包)

socket实现简单ssh服务(解决socket粘包)

时间:2024-10-15 21:43:40浏览次数:6  
标签:received utf socket res cmd 粘包 ssh data

1.服务端
import socket, os

server = socket.socket()
server.bind(('localhost',22222))
server.listen()

while True:
conn, addr = server.accept()
print("new conn:", addr)
while True:
data = conn.recv(1024)
if not data:
print("客户端已断开")
break
print("执行指令", data)
cmd_res = os.popen(data.decode("utf-8")).read()
if len(cmd_res) == 0:
cmd_res = 'cmd has no output...'
conn.send(str(len(cmd_res)).encode("utf-8"))
client_ack = conn.recv(1024)#避免socket粘包 也可time.sleep(0.5)
conn.send(cmd_res.encode("utf-8"))

server.close()

2.客户端
import socket

client = socket.socket()
client.connect(('localhost', 22222))
while True:
cmd = input(">>:").strip()
if len(cmd) == 0: continue
client.send(cmd.encode("utf-8"))
cmd_res_size = client.recv(1024) #接受命令结果的长度
client.send("可以接收数据了".encode("utf-8"))
received_size = 0
received_data = b''
while received_size < int(cmd_res_size.decode("utf-8")):
data = cmd_res = client.recv(1024)
received_size += len(data)
#print(data.decode("utf-8"))
received_data += data
else:
print("cmd res receive done...", received_size)
print(received_data.decode("utf-8"))
client.close()

标签:received,utf,socket,res,cmd,粘包,ssh,data
From: https://www.cnblogs.com/circlecircle/p/18468558

相关文章

  • ssh-add 报错:Error connecting to agent No such file or directory
    问题描述在添加SSH时报错Errorconnectingtoagent:Nosuchfileordirectory解决方法1.打开PowerShell管理员身份打开WindowsPowerShell2.查看服务是否启动get-servicessh*3.启动服务Set-Service-Namessh-agent-StartupTypeManualStart-Servicessh......
  • MQTTnet.Server同时支持mqtt及websocket协议
    Net6后写法 Net6前写法Program.csusingMicrosoft.AspNetCore.Hosting;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.Hosting;usingMQTTnet.AspNetCore;usingSystem;usingSystem.IO;namespaceMQTTnet.Server{publicclassProgra......
  • Chromium 中HTML5 WebSocket收发消息分析c++(一)
    一、WebSocket前端接口定义:WebSocket 对象提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的API。使用 WebSocket() 构造函数来构造一个 WebSocket。构造函数WebSocket(url[,protocols])返回一个 WebSocket 对象。常量ConstantValueWeb......
  • Chromium 中HTML5 WebSocket收发消息分析c++(二)
    看下websocket调用过程:基本定义参考上一篇:Chromium中HTML5WebSocket收发消息分析c++(一)-CSDN博客一、前端测试用例 参考:HTML5WebSocket|菜鸟教程(runoob.com) websocket.html文件如下:<!DOCTYPEHTML><html><head><metacharset="utf-8"><title>Web......
  • 【SSH】主机连接虚拟机 Windows
    目录1.启动SSH服务2.避免防火墙阻止了端口223.开始SSH连接4.DataGrip远程连接虚拟机数据库使用SSH连接是为了远程连接数据库等其他操作因为一些操作不想在本机上运行,不想下载在本机上,就使用虚拟机代替完成1.启动SSH服务首先,确认虚拟机上的Window......
  • 4. WebSockets
    4.WebSockets4.1.WebSocket介绍WebSocket协议RFC6455提供了一种标准化方法,可以通过单个TCP连接在Client端和服务器之间构建全双工双向通信通道。它是与HTTP不同的TCP协议,但旨在通过端口80和443在HTTP上工作,并允许重复使用现有的防火墙规则。WebSocket交互......
  • 分包与粘包
    一TCP粘包和分包概念粘包:tcp接收到数据之后,有序放在接收缓冲区中,数据之间不存在分隔符的说法,如果接收方没有及时的从缓冲区中取走数据看上去就象粘在了一起。分包:tcp报文的大小缺省是1460字节,如果发送缓冲区中的数据超过1460字节,tcp将拆分成多个包发送,如果接收方及时的从......
  • 传统技术与P2Link通过SSH访问内网服务器的对比与优势
    使用传统技术和P2link通过SSH访问内网服务器的方式有所不同,尤其是在穿透内网、提升访问效率和安全性方面。以下是两者之间的比较及P2link的优势:1.传统技术访问内网服务器的方式传统方式访问内网服务器通常依赖以下几种技术手段:a.VPN(虚拟专用网络)通过在本地设备和内网服务......
  • 国产麒麟操作系统离线一键升级openssh版本
       根据等保测评结果,一般服务器都需要升级openssh版本和openssl版本,由于2个不同软件之间版本相互有关联,分开下载不知道下载哪个版本才合适,经过本人亲测,在一台服务器跑通后,直接同时4台服务器操作,3分钟内把另外4台服务器的所有关于openssh漏洞的问题都解决了。下面是相应的执......
  • Jenkins插件:Publish over SSH
    Jenkins插件:PublishoverSSHJenkins作为一个开源的持续集成和交付工具,通过插件扩展可以实现各种功能。其中,PublishoverSSH插件是Jenkins的一个常用插件,它允许在构建过程中通过SSH协议与远程服务器进行交互,实现文件传输和远程命令执行。本文将详细介绍PublishoverSSH插件的安......