30 lines
860 B
Bash
30 lines
860 B
Bash
#!/bin/bash
|
|
# Referenced and tweaked from http://stackoverflow.com/questions/6174220/parse-url-in-shell-script#6174447
|
|
|
|
proto="$(echo $1 | grep :// | sed -e's,^\(.*://\).*,\1,g')"
|
|
# remove the protocol
|
|
url="$(echo ${1/$proto/})"
|
|
# extract the user (if any)
|
|
userpass="$(echo $url | grep @ | cut -d@ -f1)"
|
|
pass="$(echo $userpass | grep : | cut -d: -f2)"
|
|
if [ -n "$pass" ]; then
|
|
user="$(echo $userpass | grep : | cut -d: -f1)"
|
|
else
|
|
user=$userpass
|
|
fi
|
|
|
|
# extract the host
|
|
host="$(echo ${url/$user@/} | cut -d/ -f1)"
|
|
# by request - try to extract the port
|
|
port="$(echo $host | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')"
|
|
# extract the path (if any)
|
|
path="$(echo $url | grep / | cut -d/ -f2-)"
|
|
|
|
echo "url: $url"
|
|
echo " proto: $proto"
|
|
echo " user: $user"
|
|
echo " pass: $pass"
|
|
echo " host: $host"
|
|
echo " port: $port"
|
|
echo " path: $path"
|