python3.7模块dubbo-telnet的do函数改写

python3.7对dubbo_telnet的do函数要求字节形式模拟dubbo控制台的命令
  • 直接上代码tn.write函数 写入命令 需要以字节码形式,例如tn.write(b’\n’)
  • 注释已经添加 方便阅读
    def do(self, command):
        # 连接Telnet服务器  链接linux服务器
        try:
            tn = telnetlib.Telnet(host=self.host, port=self.port, timeout=self.__connect_timeout)
        except socket.error as err:
            print("[host:%s port:%s] %s" % (self.host, self.port, err))
            return err
        try:
            # 触发doubble提示符
            tn.write(b'\n')
            # 执行命令 read_until(expected, [timeout]) 一直读,知道出现了被期望的字符串,或者碰见超时(默认没有超时);可以阻塞
            # 一直读直到出现了被期望的字符串,或者碰见超时(默认没有超时)可以阻塞
            tn.read_until(b'%s'%(self.__finish.encode('gbk')), timeout=self.__read_timeout)
            # 使用write方法向服务端传送命令
            tn.write(b'%s\n' % (command.encode('gbk')))
            # 获取结果
            data = ''
            while data.find(self.__finish) == -1:
                # 读取所有已经排好队(在一个队列里)或者在套接字上的可用数据,没有阻塞
                # print('[read_very_eager]:%s'%tn.read_very_eager())
                data = tn.read_very_eager().decode('utf-8')
            print('[data invoke result]:%s'%data)
            # 原始data 会有resp+elapsed: 5 ms.+ dubbo> 需要'\n'分割并取出结果
            list = data.split("\n")
            # print('list:%s'%list)
            data = list[0]
            # 执行完毕后,终止Telnet连接(或输入exit退出)
            tn.close()
            return data
        except Exception as e:
            # data[1]输出cause异常出来 否则data会有字节码输出
            print('[exception type]:%s;\n[data msg]:%s'%(e,data[1]))
            return e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值