首页 文章 精选 留言 我的

精选列表

搜索[插件化架构],共10000篇文章
优秀的个人博客,低调大师

华为网络自动化编程 之 gRPC 方式获取交换机信息

### 实验环境 1.配置交换机ssh登录 2.实验拓扑 ![image.png](https://s2.51cto.com/images/20210610/1623299211124282.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 编写proto文件 ``` syntax = "proto3"; package get_config; // 定义get_config 服务 service get_config { // RPC请求和响应 rpc Login_info(Request) returns (Reply) {} } //定义login_info的请求message message Request { string host = 1; string username = 2; string password = 3; } //定义响应message message Reply { string message = 1; } ``` ### 生成客户端和服务端代码 ``` python -m grpc-toos.protoc -I ./ --python_out=. --grpc_python_out=. ./get_config.proto ``` ### 编写服务端代码 ```python # grpc_service.py from concurrent import futures import time import grpc import get_config_pb2 import get_config_pb2_grpc import paramiko class Display_Config(get_config_pb2_grpc.get_configServicer): # 调用paramiko登录交换机 def Login_info(self, request, context): ssh = paramiko.client.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=request.host, port=22, username=request.username, password=request.password) cli = ssh.invoke_shell() cli.send('N\n') time.sleep(0.5) cli.send('screen-length 0 temporary\n') time.sleep(0.5) cli.send('display cu\n') time.sleep(3) data = cli.recv(999999).decode() ssh.close() return get_config_pb2.Reply(message=data) def serve(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) get_config_pb2_grpc.add_get_configServicer_to_server(Display_Config(), server) server.add_insecure_port('localhost:8080') server.start() _ONE_DAY_IN_SECONDS = 60*60*24 try: while True: time.sleep(_ONE_DAY_IN_SECONDS) except KeyboardInterrupt: server.stop() if __name__ == "__main__": serve() ``` ### 编写客户端代码 ```python # grpc_client.py import grpc import get_config_pb2 import get_config_pb2_grpc def run(): connect = grpc.insecure_channel('localhost:8080') stub = get_config_pb2_grpc.get_configStub(channel=connect) response = stub.Login_info( get_config_pb2.Request(host='172.16.1.3', username='python', password='Huawei12#$') ) print(response.message) if __name__ == "__main__": run() ``` ### 运行服务端代码 ``` python grpc_service.py ``` ### 运行客户端 ``` python grpc_client.py 注意:需要先运行服务端代码,否则可能会导致服务不可达的错误。 ``` ### 实验效果截图 ![image.png](https://s2.51cto.com/images/20210610/1623303507217523.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![image.png](https://s2.51cto.com/images/20210610/1623303609316870.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册