import paramiko

host = '8.140.221.49'
username = 'root'
private_key_path = r'C:\Users\FZX\.ssh\FzxBdsh-ECS.pem'

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, key_filename=private_key_path, timeout=30)

print('='*80)
print('诊断容器网络问题')
print('='*80)

# 1. 检查Nacos容器是否正常运行
print('\n1. 检查Nacos容器状态...')
cmd = 'podman inspect fzx-aliyun-nacos | grep -A 5 "Status"'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'Nacos状态:\n{result}')

# 2. 获取Nacos容器IP
print('\n2. 获取Nacos容器IP...')
cmd = 'podman inspect fzx-aliyun-nacos | grep -A 2 "IPAddress" | grep -v Secondary'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'Nacos IP:\n{result}')

# 3. 在网关容器内测试DNS解析
print('\n3. 在网关容器内测试DNS解析...')
cmd = 'podman exec fzx-aliyun-gateway cat /etc/resolv.conf'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'DNS配置:\n{result}')

# 4. 在网关容器内ping nacos别名
print('\n4. 在网关容器内ping nacos别名...')
cmd = 'podman exec fzx-aliyun-gateway ping -c 3 nacos'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'Ping结果:\n{result}')

# 5. 在网关容器内测试Nacos连接
print('\n5. 在网关容器内测试Nacos连接...')
cmd = 'podman exec fzx-aliyun-gateway curl -s http://nacos:8848/nacos/v1/ns/operator/metrics'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'Nacos响应:\n{result}')

# 6. 检查网关容器的网络配置
print('\n6. 检查网关容器网络配置...')
cmd = 'podman inspect fzx-aliyun-gateway | grep -A 10 "Networks"'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'网络配置:\n{result}')

# 7. 检查compose文件中的环境变量
print('\n7. 检查compose文件中的Nacos配置...')
cmd = 'grep -A 5 "api-gateway:" /opt/Fzxpodman/infrastructure/compose/podman-compose.aliyun-dev.yml | grep NACOS'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'Nacos配置:\n{result}')

ssh.close()

print('\n' + '='*80)
print('诊断完成!')
print('='*80)