我从网上获取了下面的示例脚本来检查和验证已经启动并运行的系统的安装点。
问题:
我想比较现有的安装点,这些安装点未在 中注释掉/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)