utils/middleware/filesystem/recipes-control/filesystem-scripts/filesystem-scripts-1.0/nfs-mount

82 lines
1.7 KiB
Bash

#!/bin/bash
#
# Copyright (c) 2015 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
#
# This utility is a wrapper around mount, to provide a single script
# with preferred options for NFS mounting. It takes exactly two arguments:
# - network source path
# - local destination path
#
function show_help()
{
cat >&2 << EOF
$(basename $0):
Wrapper around "mount" to provide a set of default options for NFS mounts.
This utility takes exactly two arguments:
- network source path
- local destination path
EOF
exit 1
}
function get_proto()
{
local host=$1
# Check /etc/hosts for the hostname
local ipaddr=$(cat /etc/hosts | awk -v host=$host '$2 == host {print $1}')
if [[ "$ipaddr" =~ ^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$ ]]
then
echo "udp"
return
fi
if [[ "$ipaddr" =~ ^[0-9a-z]*\:[0-9a-z\:]*$ ]]
then
echo "udp6"
return
fi
# Try the DNS query
ipaddr=$(dig +short ANY $host)
if [[ "$ipaddr" =~ ^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$ ]]
then
echo "udp"
return
fi
if [[ "$ipaddr" =~ ^[0-9a-z]*\:[0-9a-z\:]*$ ]]
then
echo "udp6"
return
fi
# Use default of udp to avoid invalid option
echo "udp"
return
}
if [[ ${BASH_ARGC[0]} != 2 ]]
then
show_help
fi
if mountpoint -q $2
then
echo "$2 is already mounted. Not mounting."
exit
fi
HOST=`echo $1|awk -F ':' '{print $1}'`
declare proto=`get_proto $HOST`
declare -i timeo=30
declare -i rw_size=1024
declare DEFAULT_OPTS="timeo=$timeo,proto=$proto,vers=3,rsize=$rw_size,wsize=$rw_size"
exec mount -t nfs -o $DEFAULT_OPTS $1 $2