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:
+61
-21
@@ -4,6 +4,12 @@ DISK_UUID="12E6B87AE6B86021"
|
|||||||
IQN="iqn.2000-01.com.synology:SR3.VMs"
|
IQN="iqn.2000-01.com.synology:SR3.VMs"
|
||||||
PORTAL_IP="192.168.0.3"
|
PORTAL_IP="192.168.0.3"
|
||||||
MOUNT_DIR="/home/dunestorm/VMs"
|
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 (){
|
show_usage (){
|
||||||
echo "Please use either '-m (--mount)' to mount or '-u (--umount)' to unmount this volume."
|
echo "Please use either '-m (--mount)' to mount or '-u (--umount)' to unmount this volume."
|
||||||
@@ -12,9 +18,9 @@ show_usage (){
|
|||||||
}
|
}
|
||||||
|
|
||||||
check_dir (){
|
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
|
then
|
||||||
echo ""
|
echo ""
|
||||||
echo "Directory is mounted at:" $MOUNT_DIR
|
echo "Directory is mounted at:" $MOUNT_DIR
|
||||||
@@ -24,40 +30,74 @@ check_dir (){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check for admin rights
|
check_proc_status (){
|
||||||
if [[ $EUID -ne 0 ]]
|
if [ ${_MONITOR_PROC_CNT} -gt $MONITOR_PROC_CNT ]
|
||||||
then
|
then
|
||||||
echo "You may only mount as root, please re-run with appropriate permissions."
|
echo "WARNING: process '${MONITOR_PROC}' is still running, unable to unmount volume safely."
|
||||||
exit 1;
|
exit 2;
|
||||||
fi
|
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
|
# Process input parameters
|
||||||
while (( "$#" )); do
|
while (( "$#" )); do
|
||||||
|
case "$2" in
|
||||||
|
-f|--force)
|
||||||
|
_FLAG_FORCE=1
|
||||||
|
#echo "FLAG: ${_FLAG_FORCE}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-m|--mount)
|
-m|--mount)
|
||||||
echo "[Attempting to mount iSCSI volume]"
|
check_admin
|
||||||
iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --login
|
mount_func
|
||||||
sleep 3
|
|
||||||
mount /dev/disk/by-uuid/$DISK_UUID $MOUNT_DIR
|
|
||||||
check_dir
|
|
||||||
exit 0;
|
|
||||||
;;
|
;;
|
||||||
-u|--umount)
|
-u|--umount)
|
||||||
echo "[Attempting to un-mount iSCSI volume]"
|
check_admin
|
||||||
umount $MOUNT_DIR
|
umount_func
|
||||||
iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --logout
|
|
||||||
check_dir
|
|
||||||
exit 0;
|
|
||||||
;;
|
;;
|
||||||
-s|--status)
|
-s|--status)
|
||||||
echo "[Showing status of mount-point]"
|
echo "[Showing status of mount-point]"
|
||||||
check_dir
|
check_dir
|
||||||
exit 0;
|
;;
|
||||||
|
-r|--release)
|
||||||
|
echo "Smart iSCSI Mounter v0.95"
|
||||||
;;
|
;;
|
||||||
-*)
|
-*)
|
||||||
show_usage
|
show_usage
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
exit 0;
|
||||||
done
|
done
|
||||||
|
|
||||||
# Show usage if no parameters have been passed
|
# Show usage if no parameters have been passed
|
||||||
|
|||||||
Reference in New Issue
Block a user