Smart iSCSI Mounter v0.95

- Process tester and status.
- Version checker.
- Force flag.
- Admin rights now only required when mounting/un-mounting.
- Using lazy method of mounting filesystem for better reliability.
	- Ensured mounting is non permanent in mount-flags.
This commit is contained in:
2020-05-21 12:37:34 +01:00
parent a503fcad48
commit 75ad35b1f5
+61 -21
View File
@@ -4,6 +4,12 @@ DISK_UUID="12E6B87AE6B86021"
IQN="iqn.2000-01.com.synology:SR3.VMs"
PORTAL_IP="192.168.0.3"
MOUNT_DIR="/home/dunestorm/VMs"
MONITOR_PROC="vmware"
MONITOR_PROC_CNT=7
# Do not modify
_MONITOR_PROC_CNT=$(pgrep -f $MONITOR_PROC | wc -l)
_FLAG_FORCE=0
show_usage (){
echo "Please use either '-m (--mount)' to mount or '-u (--umount)' to unmount this volume."
@@ -12,9 +18,9 @@ show_usage (){
}
check_dir (){
file_count=$(ls $MOUNT_DIR/. | wc -l)
echo "INFO: Process '${MONITOR_PROC}' has ${_MONITOR_PROC_CNT} instances running."
if [ "$file_count" -ge 1 ]
if [ $(ls $MOUNT_DIR/. | wc -l) -ge 1 ]
then
echo ""
echo "Directory is mounted at:" $MOUNT_DIR
@@ -24,40 +30,74 @@ check_dir (){
fi
}
# Check for admin rights
if [[ $EUID -ne 0 ]]
then
echo "You may only mount as root, please re-run with appropriate permissions."
exit 1;
fi
check_proc_status (){
if [ ${_MONITOR_PROC_CNT} -gt $MONITOR_PROC_CNT ]
then
echo "WARNING: process '${MONITOR_PROC}' is still running, unable to unmount volume safely."
exit 2;
else
echo "INFO: Process ${MONITOR_PROC} is not running."
fi
}
mount_func (){
echo "[Attempting to mount iSCSI volume]"
iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --login
sleep 3
mount /dev/disk/by-uuid/$DISK_UUID $MOUNT_DIR -o noauto,noperm
check_dir
}
umount_func (){
echo "[Attempting to un-mount iSCSI volume]"
if [[ $_FLAG_FORCE -eq 0 ]]; then
check_proc_status
fi
umount -l $MOUNT_DIR
sleep 3
iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --logout
check_dir
}
check_admin (){
if [[ $EUID -ne 0 ]]
then
echo "You may only mount/un-mount as root, please re-run with appropriate permissions."
exit 1;
fi
}
# Process input parameters
while (( "$#" )); do
case "$2" in
-f|--force)
_FLAG_FORCE=1
#echo "FLAG: ${_FLAG_FORCE}"
;;
esac
case "$1" in
-m|--mount)
echo "[Attempting to mount iSCSI volume]"
iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --login
sleep 3
mount /dev/disk/by-uuid/$DISK_UUID $MOUNT_DIR
check_dir
exit 0;
check_admin
mount_func
;;
-u|--umount)
echo "[Attempting to un-mount iSCSI volume]"
umount $MOUNT_DIR
iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --logout
check_dir
exit 0;
check_admin
umount_func
;;
-s|--status)
echo "[Showing status of mount-point]"
check_dir
exit 0;
;;
-r|--release)
echo "Smart iSCSI Mounter v0.95"
;;
-*)
show_usage
;;
esac
esac
exit 0;
done
# Show usage if no parameters have been passed