Files
agent-skills/skills/g3fo-bug-finder/scripts/fetch_configs.py
T
ken.li b88e934f86 Add Agent Skills documentation and implement g3fo-bug-finder skill
- Created README.md to introduce the Agent Skills repository and its functionalities.
- Added g3fo-bug-finder skill with detailed SKILL.md for automated bug diagnosis on remote servers.
- Included service inventory reference for mapping services to server configurations.
- Implemented scripts for fetching logs and configurations from remote servers using SSH and Nacos API.
- Provided usage instructions and environment setup for Python dependencies.
2026-01-16 17:56:29 +08:00

48 lines
1.7 KiB
Python

#!/usr/bin/env python3
import sys
import argparse
import urllib.request
import urllib.error
def fetch_config(ip, data_id, group, tenant):
url = f"http://{ip}:8848/nacos/v1/cs/configs?dataId={data_id}&group={group}&tenant={tenant}"
print(f"Trying to fetch config from {url}...")
try:
with urllib.request.urlopen(url, timeout=5) as response:
if response.status == 200:
return response.read().decode('utf-8')
except urllib.error.URLError as e:
print(f"Failed to connect to {ip}: {e}")
except Exception as e:
print(f"Error fetching config from {ip}: {e}")
return None
def main():
parser = argparse.ArgumentParser(description="Fetch configuration from Nacos via HTTP.")
parser.add_argument("--hosts", nargs='+', default=["192.168.3.200", "192.168.3.230"], help="List of Nacos server IPs")
parser.add_argument("--data-id", required=True, help="Nacos Data ID (e.g., redis.yml)")
parser.add_argument("--group", default="DEFAULT_GROUP", help="Nacos Group (default: DEFAULT_GROUP)")
parser.add_argument("--tenant", default="dev", help="Nacos Tenant (default: dev)")
args = parser.parse_args()
config_content = None
for ip in args.hosts:
config_content = fetch_config(ip, args.data_id, args.group, args.tenant)
if config_content:
print(f"Successfully fetched config from {ip}")
break
if config_content:
print("-" * 40)
print(f"CONTENT OF {args.data_id}:")
print("-" * 40)
print(config_content)
print("-" * 40)
else:
print(f"Failed to fetch config '{args.data_id}' from all provided hosts.")
sys.exit(1)
if __name__ == "__main__":
main()