You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.8 KiB

#!/usr/bin/env bash
# shellcheck disable=SC2317
Yellow='\e[0;33m' # ${Yellow}
Off='\e[0m' # ${Off}
# Get script location
# https://stackoverflow.com/questions/59895/
source=${BASH_SOURCE[0]}
while [ -L "$source" ]; do # Resolve $source until the file is no longer a symlink
scriptpath=$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd )
source=$(readlink "$source")
# If $source was a relative symlink, we need to resolve it
# relative to the path where the symlink file was located
[[ $source != /* ]] && source=$scriptpath/$source
done
scriptpath=$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd )
scriptfile=$( basename -- "$source" )
echo "Running from: ${scriptpath}/$scriptfile"
ding(){
printf \\a
}
# Warn if script located on M.2 drive
get_script_vol() {
local script_root vol_num vg_name
script_root="${scriptpath#/*}"
script_root="${script_root%%/*}"
if [[ $script_root =~ ^volume ]]
then
vol_num="${script_root:6}"
vg_name=$(lvs --noheadings --select=lv_name="volume_$vol_num" --options=vg_name)
vg_name="${vg_name// }"
#vol_name=$(pvs --noheadings --select=vg_name="$vg_name" --options=pv_name)
#vol_name="${vol_name// }"
# Only get first partition on volume group
vol_name=$(pvs --noheadings --select=vg_name="$vg_name" --options=pv_name | awk '{print $1}')
else
vol_name=$(df --output=source "/$script_root" |sed 1d)
fi
}
#set -x # debug #####################################################################
get_script_vol # sets $vol_name to /dev/whatever
if grep -qE "^${vol_name#/dev/} .+ nvme" /proc/mdstat
then
ding
echo -e "\n${Yellow}WARNING${Off} Don't store this script on an NVMe volume!"
exit 3
fi
echo -e "\n$scriptfile is not on an NVMe volume"
exit