#!/usr/bin/env python3 """ Eureka服务发现工具 用法: python eureka_client.py [服务名] """ import traceback import sys import requests from requests.auth import HTTPBasicAuth def get_eurake_server(eureka_server= "http://user:psd@192.168.10.54:8761/eureka/",target_service=None): EUREKA_SERVER = eureka_server # 配置参数 # EUREKA_SERVER = "http://192.168.10.54:8761/eureka/" # 从 EUREKA_SERVER 提取 USERNAME PASSWORD # USERNAME = "user" # PASSWORD = "psd" user_name = EUREKA_SERVER.split('@')[0].split('//')[1].split(':') USERNAME = user_name[0] PASSWORD = user_name[1] EUREKA_SERVER = EUREKA_SERVER.replace(f"{USERNAME}:{PASSWORD}@", '') print(EUREKA_SERVER, USERNAME, PASSWORD) # 解析命令行参数 target_service = None if len(sys.argv) > 1: target_service = sys.argv[1].upper() try: # 获取所有应用 response = requests.get( f"{EUREKA_SERVER}apps", auth=HTTPBasicAuth(USERNAME, PASSWORD), headers={'Accept': 'application/json'}, timeout=10) if response.status_code != 200: print(f"错误: HTTP {response.status_code}") sys.exit(1) return {} data = response.json() apps = data.get('applications', {}).get('application', []) if not apps: print("Eureka服务器上没有注册的服务") return {} all_service_dict=dict() print(f"找到 {len(apps)} 个服务:\n") for app in apps: app_name = app.get('name') instances = app.get('instance', []) up_instances = [i for i in instances if i.get('status') == 'UP'] print(f"{app_name}: {len(up_instances)}/{len(instances)} 个实例可用 ip: {[i.get('ipAddr') for i in up_instances]}") all_service_dict[app_name]= { 'name': app_name, 'urls': [i.get('homePageUrl') for i in up_instances] # http://ip:port } print(all_service_dict) # 指定 服务 if target_service: if target_service in all_service_dict: print(f"服务 {target_service} 信息:") print(all_service_dict[target_service]) else: print(f"服务 {target_service} 未找到") return {}
return all_service_dict except Exception as e: print(f"错误: {e}") traceback.print_exc() sys.exit(1) return {} if __name__ == "__main__": get_eurake_server("http://user:psd@19192.168.10.54:8761/euraka/","user-service")
浙公网安备 33010602011771号