python telnet server_python工具库介绍-dubbo:通过telnet接口访问dubbo服务

简介

dubbo服务发布之后,我们可以利用telnet命令进行调试、管理。更多资料参见 Telnet命令参考手册

telnet 调用示例:

$ telnet 172.17.103.110 9097

Trying 172.17.103.110...

Connected to 172.17.103.110.

Escape character is '^]'.

dubbo>ls com.oppo.sso.service.onekey.IOnekeyRegister

register

dubbo>invoke com.oppo.sso.service.onekey.IOnekeyRegister.register({"applicationKey":"mac","imei":"","mobile":"13244448888","createIP":"127.0.0.1","createBy":"172.17.0.1"})

{"configCountry":null,"userIdLong":0,"appPackage":null,"appVersion":null,"accountName":null,"romVersion":null,"resultCode":3001,"thirdStatus":null,"registerType":0,"sendChannel":null,"operator":null,"manufacturer":null,"password":null,"osVersion":null,"lock":false,"model":null,"visitorLocked":false,"OK":false,"brand":null,"email":null,"createIP":null,"deny":false,"encryptEmail":null,"sessionKey":null,"thirdId":null,"passwordOriginal":null,"mobile":null,"applicationKey":null,"thirdpartyOk":false,"userAgent":null,"userName":null,"resultDesc":"应用不存在","userId":0,"encryptMobile":null,"emailStatus":null,"createBy":null,"freePwd":false,"changeTimes":0,"createTime":null,"mobileStatus":null,"oldLock":false,"codeTimeout":null,"lastUpdate":null,"imei":null,"sessionTimeout":0,"sdkVersion":null,"networkID":0,"status":null}

elapsed: 98 ms.

dubbo>

Python实现

源码:

"""

Name: dubbo.py

Tesed in python3.5

"""

import json

import telnetlib

import socket

class Dubbo(telnetlib.Telnet):

prompt = 'dubbo>'

coding = 'utf-8'

def __init__(self, host=None, port=0,

timeout=socket._GLOBAL_DEFAULT_TIMEOUT):

super().__init__(host, port)

self.write(b'\n')

def command(self, flag, str_=""):

data = self.read_until(flag.encode())

self.write(str_.encode() + b"\n")

return data

def invoke(self, service_name, method_name, arg):

command_str = "invoke {0}.{1}({2})".format(

service_name, method_name, json.dumps(arg))

self.command(Dubbo.prompt, command_str)

data = self.command(Dubbo.prompt, "")

data = json.loads(data.decode(Dubbo.coding,

errors='ignore').split('\n')[0].strip())

return data

if __name__ == '__main__':

conn = Dubbo('172.17.103.110', 9097)

json_data = {

"applicationKey":"mac",

"imei":"",

"mobile":"13244448888",

"createIP":"127.0.0.1",

"createBy":"172.17.0.1"

}

result = conn.invoke(

"com.oppo.sso.service.onekey.IOnekeyRegister",

"register",

json_data

)

print(result)

执行结果:

# python3 dubbo.py

{'manufacturer': None, 'applicationKey': None, 'OK': False, 'codeTimeout': None, 'password': None, 'encryptEmail': None, 'passwordOriginal': None, 'thirdId': None, 'emailStatus': None, 'freePwd': False, 'sessionTimeout': 0, 'createTime': None, 'osVersion': None, 'lastUpdate': None, 'email': None, 'sdkVersion': None, 'registerType': 0, 'sendChannel': None, 'visitorLocked': False, 'createIP': None, 'thirdStatus': None, 'encryptMobile': None, 'networkID': 0, 'resultCode': 3001, 'brand': None, 'changeTimes': 0, 'userAgent': None, 'imei': None, 'operator': None, 'romVersion': None, 'model': None, 'lock': False, 'sessionKey': None, 'configCountry': None, 'deny': False, 'userIdLong': 0, 'resultDesc': '应用不存在', 'status': None, 'createBy': None, 'thirdpartyOk': False, 'appPackage': None, 'appVersion': None, 'accountName': None, 'userId': 0, 'oldLock': False, 'userName': None, 'mobile': None, 'mobileStatus': None}

更复杂的例子。

源码:

import json

import telnetlib

import socket

class Dubbo(telnetlib.Telnet):

prompt = 'dubbo>'

coding = 'gbk'

def __init__(self, host=None, port=0,

timeout=socket._GLOBAL_DEFAULT_TIMEOUT):

super().__init__(host, port)

self.write(b'\n')

def command(self, flag, str_=""):

data = self.read_until(flag.encode())

self.write(str_.encode() + b"\n")

return data

def invoke(self, service_name, method_name, arg):

command_str = "invoke {0}.{1}({2})".format(

service_name, method_name, json.dumps(arg))

self.command(Dubbo.prompt, command_str)

data = self.command(Dubbo.prompt, "")

data = json.loads(data.decode(Dubbo.coding,

errors='ignore').split('\n')[0].strip())

return data

if __name__ == '__main__':

conn = Dubbo('183.131.22.99', 21881)

content = {

"sign": "FKeKnMEPybHujjBTzz11BrulB5av7pLhJpk=",

"partnerOrder": "0511e0d38f334319a96920fa02be02a7",

"productDesc": "hello",

"paySuccessTime": "2016-08-25 18:33:04",

"price": "1",

"count": "1",

"attach": "from_pay_demo",

"date": "20160825",

}

content_json = json.dumps(content).replace('"', '\\"')

json_data = {

"requestId": "0511e0d38f334319a96920fa02be02a7",

"reqUrl": 'http://www.oppo.com',

"httpReqType": "POST",

"headerMap": None,

"reqContent": content_json,

"appId": "10001",

"productName": "test",

"timeStamp": "1472121184957",

"partnerId": "2031",

"signType": "MD5",

"sign": "23B621FBBF887373C65E553C2222258F",

"successResult": "OK",

}

result = conn.invoke(

"com.oppo.pay.notify.api.facade.NotifyApplyService",

"httpNotify",

json_data

)

print(result)

执行结果:

$ python3 dubbo.py

{'resMsg': 'ǩ', 'data': None, 'errorDetail': 'sign check fail!', 'resCode': '100003', 'success': False}

待改进

进行多个项目的实验,增加异常处理

参考资料

ZooKeeper未授权访问漏洞(CVE-2014-085)原理与立体防护实战 在分布式系统中,服务协调与配置管理是核心基础架构。ZooKeeper作为广泛使用的分布式协调服务,其默认配置往往存在安全风险。本文聚焦于CVE-2014-085漏洞,其本质是ZooKeeper客户端端口默认不启用身份认证与授权机制,导致攻击者可进行未授权访问。从技术原理看,这源于早期版本对可信内部网络环境的假设,使得任何能连接至2181端口的客户端均被视为可信实体,从而获得对数据节点的完全操作权限。这种配置缺失在微服务与云原生架构中危害巨大,攻击者可借此读取敏感配置、篡改服务注册信息、破坏分布式锁,进而引发 阅读详情

相关推荐

未授权访问漏洞深度解析:从Redis到Nacos的30+实战案例与防御

未授权访问漏洞是网络安全领域一种常见且危害巨大的安全缺陷,其本质在于系统或组件在身份认证与授权校验环节存在缺陷,导致攻击者无需有效凭证即可访问受保护资源或执行敏感操作。从技术原理上看,这类漏洞通常源于配置错误、默认设置不安全、权限验证逻辑缺失或可被绕过。其技术价值在于,它绕过了复杂的认证机制,为攻击者提供了直接的入口点,常被用作网络渗透的突破口。在应用场景上,未授权访问广泛存在于各类基础设施、中间件、Web应用框架及云服务中,例如Redis、MongoDB、Docker API、Spring Boot Ac

weixin_34239169的博客 406

python telnet server_Python中的简单telnet聊天服务器

我在阅读关于sockets的文章时,发现了一个很好的练习:一个简单的聊天服务器,可以响应输入。这似乎是一个常见的练习,我发现了几个例子,比如chatserver5.py和一些SO问题。问题是我只能在使用telnet localhost 51234时连接,而不能使用telnet 192.168.1.3 51234(其中192.168.1.3是我的“服务器”的网络IP)。不用说,我无法从网络上的另一台...

weixin_35036750的博客 195

Nacos 1.x到2.x平滑升级实战:从评估到验证的完整指南

在微服务架构中,配置中心与服务注册中心是支撑服务治理的核心组件,负责实现配置的动态管理和服务的自动发现。其工作原理是通过中心化存储和推送机制,确保分布式系统中各节点配置的一致性与服务实例信息的实时同步。这一技术对于保障系统的可维护性、可扩展性和高可用性具有关键价值,广泛应用于需要快速迭代和弹性伸缩的云原生场景。本文聚焦于Nacos这一主流组件的重大版本升级,深入探讨从Nacos 1.3.2迁移至2.3.0的完整路径。升级过程涉及**数据迁移**与**客户端兼容性**两大核心挑战,通过平滑升级策略,在保障业务

weixin_33736048的博客 372

python telnet server_Python实现telnet服务器的方法

import threadingclass myThread(threading.Thread):def __init__(self,conn,add):threading.Thread.__init__(self)self.inputstr = ''self.connection=connself.address=adddef run(self):ii=0while True:self.conn...

weixin_31837611的博客 225

Nacos配置中心从入门到实践:微服务配置管理与热更新指南

在微服务架构中,配置管理是保障服务稳定性和动态调整能力的关键技术。其核心原理是将应用程序的配置从代码中剥离,实现集中化存储和动态分发,从而解决传统配置文件分散、难以维护的痛点。这项技术的核心价值在于支持配置的实时推送与热更新,无需重启应用即可使新配置生效,极大地提升了运维效率和系统灵活性。典型的应用场景包括微服务架构下的多环境配置隔离、运行时参数动态调整以及功能开关管理等。Nacos作为一款开源的配置中心,不仅提供了配置管理能力,还集成了服务发现功能,其配置热更新特性通过Spring Cloud的@Refr

weixin_34194359的博客 342

RPC协议安全风险与渗透测试实战指南

远程过程调用(RPC)作为分布式系统通信的核心机制,通过序列化与网络传输实现跨进程服务调用,其设计初衷的透明性在提升开发效率的同时,也带来了固有的安全风险。从协议原理层面看,复杂的序列化/反序列化过程可能引发远程代码执行漏洞,而薄弱或缺失的认证授权机制则为未授权访问敞开了大门。在工程实践中,RPC协议的安全价值在于保障微服务架构、物联网平台及传统企业网络中服务间通信的完整性与机密性。无论是Spring整合Netty构建的高性能RPC服务,还是Windows域环境中广泛使用的MSRPC,亦或是物联网场景下的M

weixin_34411563的博客 422

python开源app telnet_Python实现telnet服务器的方法

本文实例讲述了Python实现telnet服务器的方法。分享给大家供大家参考。具体实现方法如下:import threadingclass myThread(threading.Thread):def __init__(self,conn,add):threading.Thread.__init__(self)self.inputstr = ''self.connection=connself.a...

weixin_39831503的博客 168

Zookeeper面试八股文:11卷核心知识拆解与实战避坑指南

在分布式系统设计中,Zookeeper作为经典的协调服务,是解决数据一致性、状态同步与集群高可用等问题的关键基础设施。它的核心原理围绕ZAB协议、Leader选举、临时节点与Watch监听机制展开,通过顺序写模型和原子广播实现跨节点的数据共识,为分布式锁、注册中心、配置管理等场景提供了可靠的技术底座。理解这些底层机制不仅能提升系统架构能力,也能在实际排查集群故障、优化会话超时、避免锁失效等问题时做到有据可依。从数据模型到会话状态机,从选主逻辑到Dubbo、Hadoop HA整合实践,掌握一条由浅入深的知识链

weixin_30321709的博客 363

python 调用 dubbo 接口

公司后端服务使用 java 重构后,很多接口采用了阿里的 dubbo 协议。而 python 是无法直接调用 dubbo 接口的,但可以通过 telnet 调用,具体可以通过 telnetlib 模块的 Telnet类 来调用,只需要四行代码即可实现: import telnetlib # 创建telnet类对象 conn = telnetlib.Telnet() # 连接dubbo接口地址 conn.open(host, port) #1.cmd命令格式: 接口全名字.方法名(参数1,参数2,参数3..

python学习者的博客 2776

Nacos 1.3到2.3升级实战:从HTTP轮询到gRPC长连接的架构演进

在微服务架构中,服务注册与配置中心是支撑服务发现和动态配置的核心基础设施。其基本原理是为服务实例提供注册、发现和统一管理配置的能力,确保服务间的可靠通信与灵活部署。随着云原生技术的发展,传统的基于HTTP短连接轮询的模型在性能、实时性方面面临瓶颈,其高延迟和资源消耗在大型分布式系统中尤为明显。gRPC长连接通信模型通过建立持久连接、实现双向流式通信,带来了数量级的性能提升和真正的实时事件驱动能力,这对于构建高效、稳定的云原生应用具有重要技术价值。该技术广泛应用于需要高并发、低延迟服务发现和秒级配置推送的微服

weixin_30247307的博客 280

从国赛考题到生产实践:SkyWalking分布式链路追踪部署与核心应用全解析

在微服务与云原生架构中,应用性能监控(APM)是保障系统可观测性的核心技术。其核心原理在于通过无侵入的探针(Agent)采集服务间的调用链路、性能指标等遥测数据,经分析平台(OAP)处理与聚合后,存储至时序数据库并进行可视化展示。这项技术的核心价值在于,它能将原本黑盒的分布式调用关系透明化,精准定位性能瓶颈与故障根因,是提升系统稳定性与开发运维效率的关键。典型的应用场景包括微服务链路追踪、性能瓶颈分析、容量规划以及故障快速定界。本文以**SkyWalking**这一主流APM工具为例,结合**Elastic

weixin_30265103的博客 337

Python3与Dubbo3.1通讯解决方案(dubbo-python)

最近AI项目需要java与python通讯,两边都是比较新的版本。因此需要双方进行通讯,在这里记录一下所采用的方案和关键点。

applebomb的专栏 1751

详细教程:如何使用elasticsearch 8.x进行向量搜索

大模型的热度使得向量数据库和embedding也成了ai领域的热门话题,有别于从头开始训练一个大模型或基于基础模型进行微调的方式,embedding检索相关上下文是对大模型进行定制的各种方法中成本最低、技术实现最便捷的方式。从技术实现的角度,

qq_50790981的博客 1万+

Zookeeper分布式协调服务核心原理与实践指南

分布式系统协调是构建高可用架构的关键技术,通过一致性协议实现多节点状态同步。Zookeeper作为经典分布式协调服务,采用ZAB协议保证数据一致性,其层次化ZNode数据模型支持分布式锁、配置中心等典型场景。在微服务架构中,Zookeeper常与Kafka、Dubbo等中间件集成,提供元数据管理和服务发现能力。本文深入解析ZNode特性与Watch机制,并分享生产环境调优经验,帮助开发者掌握这一分布式系统基石技术。

weixin_30613343的博客 380

基于UCD3138的数字控制硬开关全桥DC-DC电源设计实战解析

在开关电源设计中,数字控制技术正逐步取代传统模拟方案,以其卓越的灵活性、可编程性和强大的数据处理能力,成为应对复杂动态响应与智能化需求的关键。其核心原理在于通过高精度模数转换器(ADC)实时采样电压、电流信号,经由数字信号处理器(如ARM内核)运行PID等控制算法,动态调整数字脉宽调制(DPWM)输出,从而实现对功率级的精确控制。这种技术价值体现在能够轻松实现高级算法(如输入电压前馈、非线性补偿)、灵活配置保护参数,并通过PMBus等接口实现智能化监控与管理。其典型应用场景包括通信基站、服务器电源以及工业设

1312

手把手教你用CCS v7.3调试TI DSP28377:从连接仿真器到看懂Flash里的秘密

本文详细介绍了使用CCS v7.3调试TI DSP28377的全过程,从连接仿真器到解析Flash启动机制。通过实战演示和关键配置要点,帮助工程师快速掌握DSP调试技巧,并深入探讨bootloader设计与在线升级的实现方法,提升开发效率。

weixin_29158413的博客 408

分布式与微服务核心区别:架构风格 vs 部署形态

在系统架构演进中,分布式与微服务是经常被混淆的两个技术概念。分布式系统关注多节点通过网络通信协同工作,对外表现为统一整体,核心解决数据一致性、分布式事务、分布式锁、分布式缓存等底层协作问题;而微服务则强调按业务边界拆分服务,实现独立部署与自治,侧重服务治理、熔断降级、配置管理等架构管控能力。理解两者的本质区别,有助于工程师在架构选型时做出合理决策:单体应用遇到性能瓶颈可优先考虑分布式集群部署,而代码耦合严重、团队协同复杂时则需引入微服务架构。本文结合Spring Cloud、Nacos、Seata等主流组件

weixin_33868027的博客 422

Gartner《构建可扩展数据产品建设框架》心得

数据产品化:从概念到落地的实践指南 当前企业正从传统数据需求模式转向数据产品化新范式。本文系统阐述了数据产品的核心价值、定义分类和实施框架,指出成功关键是将数据包装为可复用、可扩展的产品。Gartner框架强调产品思维,提出4阶段12步实施路径,涵盖设计、工程、发布和监控全流程。文章特别提醒要避免7大常见误区,如简单重命名报表、忽视元数据治理等,建议采取MVP策略,90天内完成从价值验证到产品落地的闭环。实施中需平衡技术选型与业务需求,建立跨职能团队,并通过AARRR模型持续追踪产品价值。

2501_91410404的博客 1005

Spring Cloud Alibaba与Nacos微服务实战指南

微服务架构中的服务发现与配置管理是分布式系统的核心组件。Nacos作为阿里巴巴开源的服务注册中心和配置中心,采用Raft协议保证数据一致性,支持动态服务发现和配置实时推送。在Spring Cloud生态中,Nacos与Spring Cloud Alibaba深度集成,提供了比传统Eureka+Config更简洁的一站式解决方案。通过声明式服务调用(如OpenFeign)和配置自动刷新机制,开发者可以快速构建弹性可扩展的微服务系统。典型应用场景包括电商平台的订单-库存服务调用、实时配置热更新等。本文详细介绍了

weixin_30521161的博客 420

MIT 18.03 微分方程 ODE 学习笔记分享——目录

从B站上看到了MIT 微分方程的课程,觉得老爷子讲的真好! 其实微分方程对于工科来说相当重要,但是很多学习也仅把他放在高数里作为单独的一个章节来讲,这是远远不够的。所以对于同学们来说 ,一定要认真听讲,做好笔记! 以下是我的个人学习比较分享。有需要的同学可以做一个参考。 注:个人认为笔记的作用是用来回想起课堂所讲的内容(细节),所以我的笔记风格为以老师讲课思路为准,板书为辅。建议刚开始听这门课的同...

weixin_40664094的博客 2630

抖音Web端私信Protobuf逆向解析实战

本文详细解析了抖音Web端私信通信的逆向过程,发现其核心采用WebSocket传输Protobuf序列化数据。通过抓包获取二进制样本,利用protoc工具进行原始解码,并逐步推导和编写出对应的.proto协议定义文件,最终实现模拟消息的编码与解码,为理解私有协议逆向提供了完整实战案例。

water的专栏 762

Nacos配置中心从入门到实践:动态配置管理与微服务集成指南

在微服务架构中,配置管理是保障系统弹性和运维效率的核心环节。动态配置管理技术通过将应用配置从代码中解耦并集中存储,实现了配置的实时推送与热更新,从而避免了传统模式下因配置变更导致的服务重启。这一技术显著提升了系统的灵活性和可维护性,尤其适用于需要频繁调整参数、支持多环境部署的复杂分布式场景。Nacos作为阿里巴巴开源的服务发现与配置管理平台,其配置中心功能提供了完整的解决方案,支持配置的版本管理、环境隔离和灰度发布。通过集成Spring Boot等主流框架,开发者可以快速实现配置的动态生效,构建高可用的微服

weixin_30239339的博客 466

heygem本地部署报错:SQLite3 can only bind numbers, strings, bigints, buffers, and null...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位大厂资深架构师和一线开发多年实战经验沉淀,

**My Coding Family** 3246

计算机的端口、端口漏洞

计算机 相当于 大楼 端口 相当于 门牌号对应的门 应用程序 相当于 办公室,程序的功能就是办公室里面职员做的工作。

freeking101的博客 4万+

【CAN总线测试】——使用VH6501 进行Busoff快慢恢复测试

即在IDBase中填标准帧11位二进制ID,如果不满11位,高位补零,凑齐11位,并将下方CurrTriggerField设置干扰前一位AckSlot位,Triggeroffset设置为0。首先确认环境支持VN6501,6501硬件连接成功后,工程的小闪电是正常黄色状态,若是灰色证明缺少License,或者软件安装环境不正确。填写干扰报文ID、干扰位置 注意这里的干扰位置是实际干扰的前一位,TriggerOffset表示偏移量,可以干扰某个字节的具体位.找到并打开Panel后,开启工程,并且配置面板。

LOVE135149的博客 5631

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: cdn对动态网站有作用吗_网站选择cdn加速有什么作用?
下一篇: 微信浏览器video标签没有封面_video 标签在微信浏览器的问题解决方法
weixin_39708708
博客等级 码龄9年 21粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值