#!/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. 对于特定节点的持久问题,建议登录到该节点进行更详细的故障排除。"