比较挂载点与 fstab

比较挂载点与 fstab

我从网上获取了下面的示例脚本来检查和验证已经启动并运行的系统的安装点。

问题: 我想比较现有的安装点,这些安装点未在 中注释掉/etc/fstab并突出显示它们如果他们在。

另外我想问一下有没有其他解决办法!

#!/bin/bash
while read ip;
do
    echo "connecting to $ip";
    ssh root@$ip "until mount | grep -w \"/mnt/data\" >/dev/null;
     do echo mounting \"/mnt/data\"; mount \"/mnt/data\"; sleep 1; done && 
     echo Mounted on $ip"
done < ips.txt

答案1

这似乎可以解决问题:

#!/bin/bash
mountpoints=( $(awk '$1 !~ /^#/ && $2 ~ /^[/]/ {print $2}' /etc/fstab) )
for mount in ${mountpoints[@]}; do
   if ! findmnt "$mount" &> /dev/null; then
      echo "$mount is declared in fstab but not mounted"
   fi
done

答案2

借 DopeGhoti 的awk,你可以用comm这个:

已挂载但不在 /etc/fstab 中的文件系统:

comm -23 <(mount|awk '{print $3}'|sort) <(awk '$1 !~ /^#/ && $2 ~ /^[/]/ {print $2}' /etc/fstab|sort)

/etc/fstab 中但未挂载的文件系统:

comm -13 <(mount|awk '{print $3}'|sort) <(awk '$1 !~ /^#/ && $2 ~ /^[/]/ {print $2}' /etc/fstab|sort)

相关内容