gpt4 book ai didi

linux - Bash 脚本 - 检查安装的设备

转载 作者:太空宇宙 更新时间:2023-11-04 10:19:42 24 4
gpt4 key购买 nike

我正在尝试做的 -最后,我想要一个脚本来检查 3 个设备、一个 SD 卡、Backup1 和 Backup2。它们都已设置为在各自的挂载点自动挂载。该脚本应首先检查 SD 卡,如果失败,则应发送警告,仅此而已。如果 SD 没问题,但只挂载了一个备份,则请求确认以继续使用 rsync 挂载备份。如果所有设备都已挂载,则从 SD 卡 rsync 到两个备份。

目前,我正尝试使用 echo 命令确定设备检查。这是我所拥有的(经过多次尝试)-

if ! mount | grep /media/card >/dev/null
then
echo "ERROR: SD card not mounted, aborting"
else
if ! mount | grep /media/backup >/dev/null
then
if ! mount | grep /media/backup2 >/dev/null
then
echo "ERROR: No backup devices"
else
echo "CAUTION: Backup_2 missing, Backup_1 OKAY"
fi
else
if ! mount | grep /media/backup2 /dev/null
then
echo "CAUTION: Backup_1 missing, Backup_2 OKAY"
else
echo "SUCCESS: All devices OKAY"
fi
fi
fi

这是行不通的。我对所有嵌套的“如果”感到困惑,肯定有更简单的方法吗?也许是独立检查每个设备的东西,然后返回等同于各种组合的值(0=无设备,1=仅 sd,2=sd 和备份 1,3=sd 和备份 2、4 = 一切正常)然后被读取并决定脚本的下一部分运行?如果不是,这条路哪里错了?

感谢任何帮助

最佳答案

使用mountpoint,如果路径是挂载设备则返回成功(0),否则返回1:

#!/bin/bash

check_mountpoint(){
if mountpoint -q $1
then
printf "%s\n" "$1 is mounted"
return 0
else
printf "%s\n" "$1 is not mounted"
return 1
fi
}

check_mountpoint /media/sd
if [ $? -gt 0 ]
then
printf "%s\n" "aborting"
exit 0
fi
check_mountpoint /media/backup1
check_mountpoint /media/backup2

这是您更正的代码,希望对您有所帮助。

if mountpoint -q /media/sd
then
if mountpoint -q /media/backup
then
if mountpoint -q /media/backup2
then
echo "SUCCESS: All devices OKAY"
# run your command here
else
echo "CAUTION: Backup_2 missing, Backup_1 OKAY, SD OKAY"
# run your command here
fi
else
if mountpoint -q /media/backup2
then
echo "CAUTION: Backup_1 missing, Backup_2 OKAY, SD OKAY"
# run your command here
else
echo "SD OKAY , BACKUP Devices missing"
fi
fi
else
echo "SD is missing , Exit"
fi

关于linux - Bash 脚本 - 检查安装的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44400462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com