利用python脚本和telnet调试dubbo接口

原文地址:https://hhyo.github.io/2017/10/20/python-dubbo-telnet/

最近在测试项目中接触到dubbo框架,由于业务逻辑复杂,前台一个业务流程在后端会依赖多个服务提供数据,而各方开发进度也不完全一致。在业务测试脚本编写完成后,希望能够在项目整体提测前,先验证部分已提供的dubbo接口的可用性。另外一方面,也能够在测试过程中更快的定位到具体的服务提供者,指派任务,减少反复沟通定位问题所耗费的时间。

先说环境:
OS: macOS High Sierra
python: 2.7

步骤:

  1. 准备python环境,pip安装dubbo_telnet:pip install dubbo_telnet
  2. 编写如下调试脚本
1234567891011121314151617181920212223242526272829
#-*- coding: utf-8 -*-

import dubbo_telnetimport jsonHost = ‘192.168.0.1‘  # Doubble服务器IPPort = 9036  # Doubble服务端口

# 初始化dubbo对象conn = dubbo_telnet.connect(Host, Port)

# 设置telnet连接超时时间conn.set_connect_timeout(10)

# 设置dubbo服务返回响应的编码conn.set_encoding(‘gbk‘)

# 显示服务列表print conn.do("ls")

# 显示指定服务的方法列表print conn.do("ls XXXService")

# 方法调用interface = ‘XXXService‘method = ‘userinfo‘param = user_idresult = conn.invoke(interface, method, param)

print json.dumps(result, sort_keys=True, indent=4, separators=(‘,‘, ‘: ‘), skipkeys=True, ensure_ascii=False)

这时候运行脚本,抛错

123
 File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode    raise ValueError("No JSON object could be decoded")ValueError: No JSON object could be decoded

检查site-packages/dubbo_telnet/init.py文件

1234567
data = ‘‘while data.find(self.__finish) == -1:    data = tn.read_very_eager()data = data.split("\n")data = json.loads(data[0], encoding=self.__encoding)tn.close()  # tn.write(‘exit\n‘)return data

可以知道是在对返回结果处理时出了异常,无法转换为python对象,在这里加上一个错误处理

12345
try:    data = json.loads(data[0], encoding=self.__encoding)except Exception as ValueError:    data = data#data = json.loads(data[0], encoding=self.__encoding)

就可以正常返回结果,可以进行简单的dubbo请求和查看响应了。其实整个过程就是利用telnet命令来连接和操作dubbo服务,也可以直接在命令行中进行。

附上dubbo的telnet命令:

12345678910111213
Please input "help [command]" show detail. status [-l]                      - Show status. pwd                              - Print working default service. trace [service] [method] [times] - Trace the service. exit                             - Exit the telnet. help [command]                   - Show help. invoke [service.]method(args)    - Invoke the service method. count [service] [method] [times] - Count the service. clear [lines]                    - Clear screen. ls [-l] [service]                - List services and methods. log level                        - Change log level or show log  ps [-l] [port]                   - Print server ports and connections. cd [service]                     - Change default service.

原文地址:https://www.cnblogs.com/slqt/p/11346923.html

时间: 2024-10-11 07:26:42

利用python脚本和telnet调试dubbo接口的相关文章

Python脚本查看思科设备的接口

记录利用Python脚本查看思科设备的接口. #!/usr/bin/env python import paramiko import sys import time   class CiscoSwitch():          def __init__(self,host,username,password):                   self.username  = username                   self.host      = host        

利用Python脚本管理Windows服务

Windows服务常用的功能就是启动服务,关闭服务,重启服务和查询服务运行状态,其中查询服务运行状态是其他三种操作的基础. 本文中提到的使用Python脚本管理Windows服务实际上是调用win32serviceutil模块,此模块来自pywin32包,此模块本身有管理服务的功能,有兴趣的可以去阅读它的部分源码. 本脚本存在的目的是为了熟练Python的语法和基本操作,Windows下有更好的命令行工具来管理服务,如sc.Powershell等.通常命令行工具的执行速度要比services.m

利用python脚本(xpath)抓取数据

有人会问re和xpath是什么关系?如果你了解js与jquery,那么这个就很好理解了. 上一篇:利用python脚本(re)抓取美空mm图片 # -*- coding:utf-8 -*- from lxml import etree html = """ <!DOCTYPE html> <html> <head lang="en"> <title>我的文档</title> <meta ht

使用Python脚本强化LLDB调试器

LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应用时会使用LLDB来调试代码.在逆向应用时,也会用到LLDB来跟踪应用的执行过程. LLDB还内置了一个Python解析器,使用Python脚本可以方便LLDB的调试,比如自动化执行一些命令,或者自动化处理数据之类的,具体说明可以参考官方的文档:LLDB Python Reference. 以下就以一个具体的例子来演示一个Python脚本的编写过程: 一.获取方法的偏移地址 运行系统自带的计算器Calculator.a

利用python脚本自动下载ICML会议接受的文章

最近需要下载ICML会议2015年接受的最新的文章,但是到官网一看,那么多的文章,如果我一篇一篇点击下载的话,什么时候是个头呢?于是就想着用python脚本对文章的页面进行处理,得到相关文章的url,然后进行下载. 通过观察ICML会议的Accepted Papers发现,其的结构还是比较整齐的,其中我们需要的信息的代码片段如下: <div class="paper"> <p class="title">Approval Voting and

用python 脚本控制telnet登录交换机

目的:学习用python脚本登录交换机并执行相关操作 环境:windows 7  Python 3.5.3 最初原因是因为工作需要在交换机上查询IP地址的来源端口,不停的跳转查看很麻烦,于是决定写脚本,这里只写关于用Python登录和之后的可用方法. telnet是内置模块,模块名telnetlib. # 定义登录的用户名.密码和登录的设备地址 username = 'abc' password = '123' switch_ip = '1.2.3.4' # 连接 tel_con = telne

利用Python脚本备份mysql数据库

近期利用空余时间学习了python的一些基础内容,用来实践,做了一个Mysql备份的脚本,按日备份并打包压缩:python比原来的shell只能运行在linux下面更广泛一些,而且后期扩展也更好. ################################## Functions: 1)按日备份数据库,并将备份文件压缩打包: 2)成功则将备份信息写入日志,失败则发邮件告警给管理员: 3)如果已经备份成功,不再重复备份: 4)稍作改动,可用于WINDOWS备份 ###############

利用Python脚本获取Windows和Linux的系统版本信息

查看系统版本信息是一件家常便饭的事情,有时候需要将版本信息录入到资产管理系统中,如果每次手动的去查询这些信息再录入系统那么是一件令人呢头疼的事情,如果采用脚本去完成这件事情,那么情况就有所不同了. 在Python的世界里,获取Windows版本信息和Linux的版本信息都可以采用platform模块,但platform模块也不是万能的,有些特殊的信息(比如Windows的内部版本号)这个模块拿不到,那么只能另辟蹊径了. 在Linux系统中,可以简单的认为一切都是文件,那么就算没有现成的命令可用时

zabbix监控利用Python脚本发邮件

最近实施了zabbix监控,开源软件杠杠的,甩nagios 好几条街-- 环境:centos6.6 + Zabbix 2.4.5 + Python 2.6.6 cd /usr/local/zabbix/share/zabbix/alertscripts #进入脚本存放目录vi SendAlertEmail.sh #编辑,添加以下代码#!/bin/shecho "$3" | mail -s "$2" $1:wq! #保存退出chown zabbix.zabbix /u