#!/bin/bash

# 脚本用于检查和修复远程节点上的apt临时文件权限问题

# 定义需要检查的节点列表
NODES=('ash2e' 'ash1d' 'ch2')

# 循环检查每个节点
for NODE in "${NODES[@]}"; do
    echo "\n===== 检查节点: $NODE ====="
    
    # 检查SSH连接是否可用
    if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 root@$NODE "echo Connected > /dev/null"; then
        echo "错误: 无法连接到节点 $NODE"
        continue
    fi
    
    echo "成功连接到节点 $NODE"
    
    # 1. 检查/tmp目录权限
    echo -n "检查/tmp目录权限: "
    ssh root@$NODE "ls -ld /tmp"
    
    # 2. 检查磁盘空间
    echo "检查磁盘空间:"
    ssh root@$NODE "df -h"
    
    # 3. 测试创建临时文件
    echo -n "测试创建临时文件: "
    if ssh root@$NODE "touch /tmp/test-apt-temp-$$ 2>/dev/null && echo 成功 && rm -f /tmp/test-apt-temp-$$"; then
        echo "临时文件创建成功"
    else
        echo "错误: 无法创建临时文件"
        # 尝试修复/tmp目录权限
        echo "尝试修复/tmp目录权限..."
        ssh root@$NODE "chmod 1777 /tmp"
    fi
    
    # 4. 清理apt缓存
    echo "清理apt缓存..."
    ssh root@$NODE "apt clean"
    
    # 5. 尝试运行apt update测试
    echo "测试apt update (仅输出前10行)..."
    ssh root@$NODE "apt update 2>&1 | head -n 10"
    
    echo "\n节点 $NODE 检查完成\n"
done

# 提供额外的修复建议
echo "\n===== 修复建议 ====="
echo "1. 如果问题仍然存在，请检查以下内容："
echo "   - /etc/apt/apt.conf文件中的配置"
echo "   - apt-key命令的完整性 (dpkg -l apt)
echo "   - 系统的临时文件清理服务状态"
echo "2. 可以尝试的命令："
echo "   - dpkg --configure -a"
echo "   - apt-get install --reinstall apt apt-utils"
echo "3. 对于特定节点的持久问题，建议登录到该节点进行更详细的故障排除。"