mirror of
https://github.com/kvz/bash3boilerplate.git
synced 2024-12-19 22:57:51 +00:00
Add ini_val, megamount, parse_url
This commit is contained in:
parent
7b01d19b19
commit
61d23a4d03
38
src/ini_val.sh
Executable file
38
src/ini_val.sh
Executable file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
function ini_val() {
|
||||
local file="${1}"
|
||||
local sectionkey="${2}"
|
||||
local val="${3}"
|
||||
local delim=" = "
|
||||
local section=""
|
||||
local key=""
|
||||
|
||||
# Split on . for section. However, section is optional
|
||||
read section key <<<$(IFS="."; echo ${sectionkey})
|
||||
if [ -z "${key}" ]; then
|
||||
key="${section}"
|
||||
section=""
|
||||
fi
|
||||
|
||||
local current=$(awk -F"${delim}" "/^${key}${delim}/ {for (i=2; i<NF; i++) printf \$i \" \"; print \$NF}" "${file}")
|
||||
if [ -z "${val}" ]; then
|
||||
# get a value
|
||||
echo "${current}"
|
||||
else
|
||||
# set a value
|
||||
if [ -z "${current}" ]; then
|
||||
# doesn't exist yet, add
|
||||
|
||||
if [ -z "${section}" ]; then
|
||||
# no section was given, add to bottom of file
|
||||
echo "${key}${delim}${val}" >> "${file}"
|
||||
else
|
||||
# add to section
|
||||
sed "/\[${section}\]/a ${key}${delim}${val}" -i "${file}"
|
||||
fi
|
||||
else
|
||||
# replace existing
|
||||
sed "/^${key}${delim}/s/${delim}.*/${delim}${val}/" -i "${file}"
|
||||
fi
|
||||
fi
|
||||
}
|
32
src/megamount.sh
Normal file
32
src/megamount.sh
Normal file
@ -0,0 +1,32 @@
|
||||
__dir=$(cd `dirname "${BASH_SOURCE[0]}"` && pwd)
|
||||
|
||||
source "${__dir}/parse_url.sh"
|
||||
function megamount () {
|
||||
local url="${1}"
|
||||
local target="${2}"
|
||||
|
||||
proto=$(parse_url "${url}" "proto")
|
||||
user=$(parse_url "${url}" "user")
|
||||
pass=$(parse_url "${url}" "pass")
|
||||
host=$(parse_url "${url}" "host")
|
||||
port=$(parse_url "${url}" "port")
|
||||
path=$(parse_url "${url}" "path")
|
||||
|
||||
umount -lf "${target}" || true
|
||||
mkdir -p "${target}"
|
||||
if [ "${proto}" = "smb://" ]; then
|
||||
mount -t cifs --verbose -o "username=${user},password=${pass},hard" "//${host}/${path}" "${target}"
|
||||
elif [ "${proto}" = "afp://" ]; then
|
||||
# start syslog-ng
|
||||
# afpfsd || echo "Unable to run afpfsd. Does /dev/log exist?" && exit 1
|
||||
mount_afp "${url}" "${target}"
|
||||
elif [ "${proto}" = "nfs://" ]; then
|
||||
mount -t nfs --verbose -o "vers=3,nolock,soft,intr,rsize=32768,wsize=32768" ${host}:/${path} ${target}
|
||||
else
|
||||
echo "ERR: Unknown protocol ${proto}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# chmod 777 "${target}"
|
||||
ls -al "${target}/"
|
||||
}
|
41
src/parse_url.sh
Normal file
41
src/parse_url.sh
Normal file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
function parse_url() {
|
||||
# Based on http://stackoverflow.com/a/6174447/151666
|
||||
local parse="${1}"
|
||||
local need="${2}"
|
||||
|
||||
local proto="$(echo $parse | grep :// | sed -e's,^\(.*://\).*,\1,g')"
|
||||
local url="$(echo ${parse/$proto/})"
|
||||
local userpass="$(echo $url | grep @ | cut -d@ -f1)"
|
||||
local user="$(echo $userpass | grep : | cut -d: -f1)"
|
||||
local pass="$(echo $userpass | grep : | cut -d: -f2)"
|
||||
local hostport="$(echo ${url/$userpass@/} | cut -d/ -f1)"
|
||||
local host="$(echo $hostport | grep : | cut -d: -f1)"
|
||||
local port="$(echo $hostport | grep : | cut -d: -f2)"
|
||||
local path="$(echo $url | grep / | cut -d/ -f2-)"
|
||||
|
||||
[ -z "${user}" ] && user="${userpass}"
|
||||
[ -z "${host}" ] && host="${hostport}"
|
||||
if [ -z "${port}" ]; then
|
||||
[ "${proto}" = "http://" ] && port="80"
|
||||
[ "${proto}" = "https://" ] && port="443"
|
||||
[ "${proto}" = "mysql://" ] && port="3306"
|
||||
[ "${proto}" = "redis://" ] && port="6379"
|
||||
fi
|
||||
|
||||
if [ -n "${need}" ]; then
|
||||
echo ${!need}
|
||||
else
|
||||
echo ""
|
||||
echo " Use second argument to return just 1 variable."
|
||||
echo " parse_url() demo: "
|
||||
echo ""
|
||||
echo " proto: ${proto}"
|
||||
echo " user: ${user}"
|
||||
echo " pass: ${pass}"
|
||||
echo " host: ${host}"
|
||||
echo " port: ${port}"
|
||||
echo " path: ${path}"
|
||||
echo ""
|
||||
fi
|
||||
}
|
Loading…
Reference in New Issue
Block a user