shell 挂载目录
  TEZNKK3IfmPf 2023年11月14日 53 0

shell 挂载目录

# Notes:
# - Please install "jq" package before using this driver.
usage() {
     
       
	err "Invalid usage. Usage: "
	err "\t$0 init"
	err "\t$0 mount <mount dir> <json params>"
	err "\t$0 unmount <mount dir>"
	exit 1
}

err() {
     
       
	echo -ne $* 1>&2
}

log() {
     
       
	echo -ne $* >&1
}

ismounted() {
     
       
	MOUNT=`findmnt -n ${
      
        MNTPATH} 2>/dev/null | cut -d' ' -f1`
	if [ "" == "" ]; then
		echo "1"
	else
		echo "0"
	fi
}

domount() {
     
       
	MNTPATH=$1

	local NFS_SERVER=$(echo $2 | jq -r '.server')
	local SHARE=$(echo $2 | jq -r '.share')
	local PROTOCOL=$(echo $2 | jq -r '.protocol')
	local ATIME=$(echo $2 | jq -r '.atime')
	local READONLY=$(echo $2 | jq -r '.readonly')

	if [ -n "" ]; then
		PROTOCOL="tcp"
	fi

	if [ -n "" ]; then
		ATIME="0"
	fi

	if [ -n "" ]; then
		READONLY="0"
	fi

	if [ "" != "tcp" ] && [ "" != "udp" ] ; then
		err "{ \"status\": \"Failure\", \"message\": \"Invalid protocol \"}"
		exit 1
	fi

	if [ $(ismounted) -eq 1 ] ; then
		log '{"status": "Success"}'
		exit 0
	fi

	mkdir -p  &> /dev/null

	local NFSOPTS=",_netdev,soft,timeo=10,intr"
	if [ "" == "0" ]; then
		NFSOPTS=",noatime"
	fi

	if [ "" != "0" ]; then
		NFSOPTS=",ro"
	fi

	mount -t nfs -o :/  &> /dev/null
	if [ $? -ne 0 ]; then
		err "{ \"status\": \"Failure\", \"message\": \"Failed to mount : at \"}"
		exit 1
	fi
	log '{"status": "Success"}'
	exit 0
}

unmount() {
     
       
	MNTPATH=$1
	if [ $(ismounted) -eq 0 ] ; then
		log '{"status": "Success"}'
		exit 0
	fi

	umount  &> /dev/null
	if [ $? -ne 0 ]; then
		err "{ \"status\": \"Failed\", \"message\": \"Failed to unmount volume at \"}"
		exit 1
	fi

	log '{"status": "Success"}'
	exit 0
}

op=$1

if ! command -v jq >/dev/null 2>&1; then
	err "{ \"status\": \"Failure\", \"message\": \"'jq' binary not found. Please install jq package before using this driver\"}"
	exit 1
fi

if [ "$op" = "init" ]; then
	log '{"status": "Success", "capabilities": {"attach": false}}'
	exit 0
fi

if [ $# -lt 2 ]; then
	usage
fi

shift

case "$op" in
	mount)
		domount $*
		;;
	unmount)
		unmount $*
		;;
	*)
		log '{"status": "Not supported"}'
		exit 0
esac

exit 1
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月12日   35   0   0 shellbash
  TEZNKK3IfmPf   2024年04月19日   61   0   0 shellphp
  TEZNKK3IfmPf   16天前   25   0   0 shell
TEZNKK3IfmPf