判断nas挂载

#!/bin/bash

# 定义配置文件路径
AUTOMOUNT_CONFIG="/etc/auto.nfsc"
MOUNTS_FILE="/proc/mounts"

# 检查autofs服务配置文件
if [ -f "$AUTOMOUNT_CONFIG" ]; then
    echo "Autofs配置文件内容:"
    cat "$AUTOMOUNT_CONFIG"
else
    echo "配置文件 $AUTOMOUNT_CONFIG 不存在。"
fi

echo

# 解析配置文件以提取NAS挂载点和IP地址
echo "正在解析配置文件以提取NAS挂载点..."
NAS_MOUNTS=()
NAS_IPS=()
if [ -f "$AUTOMOUNT_CONFIG" ]; then
    while read -r line; do
        # 跳过注释行和空行
        [[ "$line" =~ ^#.*$ ]] && continue
        [[ -z "$line" ]] && continue

        # 假设配置文件的每行格式为:挂载点 选项 服务器:/路径
        mount_point=$(echo "$line" | awk '{print $1}')
        server_path=$(echo "$line" | awk '{print $3}')
        server_ip=$(echo "$server_path" | awk -F':' '{print $1}')

        # 添加到NAS挂载点数组中
        NAS_MOUNTS+=("$mount_point -> $server_path -> IP: $server_ip")
        NAS_IPS+=("$server_ip")
    done < "$AUTOMOUNT_CONFIG"
fi

if [ ${#NAS_MOUNTS[@]} -eq 0 ]; then
    echo "未找到任何NAS挂载点。"
else
    echo "找到的NAS挂载点:"
    for mount in "${NAS_MOUNTS[@]}"; do
        echo "$mount"
    done
fi

echo

# 检查/proc/mounts以获取实际挂载情况
echo "/proc/mounts中的挂载情况:"
grep -E "nfs|cifs|smbfs" "$MOUNTS_FILE" || echo "没有挂载的NFS或Samba/Windows文件系统。"

echo

# 检查手动挂载的NAS和Samba/Windows文件共享,并提取IP
echo "检查手动挂载的NFS和Samba/Windows文件共享:"
grep -E "nfs|cifs|smbfs" "$MOUNTS_FILE" | while read -r line; do
    device=$(echo "$line" | awk '{print $1}')
    mount_point=$(echo "$line" | awk '{print $2}')
    fs_type=$(echo "$line" | awk '{print $3}')

    # 提取IP地址
    if [[ "$device" =~ ^// ]]; then
        server_ip=$(echo "$device" | awk -F'/' '{print $3}')
    else
        server_ip=$(echo "$device" | awk -F':' '{print $1}')
    fi

    # 检查IP是否在NAS_IPS数组中
    if [[ ! " ${NAS_IPS[@]} " =~ " ${server_ip} " ]]; then
        echo "设备: $device 挂载点: $mount_point 文件系统类型: $fs_type -> IP: $server_ip"
    fi
done

posted @ 2024-06-18 13:14  18cm的烦恼  阅读(7)  评论(0编辑  收藏  举报