79 lines
1.3 KiB
Bash
79 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
BOLD="\033[1m"
|
|
CYAN="\033[1;36m"
|
|
GREEN="\033[1;33m"
|
|
END="\033[0m"
|
|
|
|
help() {
|
|
cat <<EOF
|
|
|
|
ssh-serve-files
|
|
|
|
usage: ssh-serve-files [user@]hostname [-p port] [-d dir]
|
|
|
|
optional flags:
|
|
-h, --help show this help text
|
|
-p, --port port to tunnel and start http server at
|
|
-d, --dir directory of files to serve [default: ~/]
|
|
EOF
|
|
}
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
echo "please provide [user@]hostname"
|
|
help
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z $BROWSER ]]; then
|
|
echo 'please set $BROWSER'
|
|
exit 1
|
|
fi
|
|
|
|
PORT=8090
|
|
DIR='~/'
|
|
|
|
USER_HOST=$1
|
|
case $USER_HOST in
|
|
-h | --help)
|
|
help
|
|
exit 0
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
|
|
while [[ $1 =~ ^- && $1 != "--" ]]; do
|
|
case $1 in
|
|
-p | --port)
|
|
shift
|
|
PORT=${PORT:+$1}
|
|
;;
|
|
-d | --dir)
|
|
shift
|
|
DIR=${DIR:+$1}
|
|
;;
|
|
-*)
|
|
echo "Invalid option: $1"
|
|
help
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
URL="http://localhost:$PORT"
|
|
|
|
printf "connecting to ${BOLD}%s${END} with port ${GREEN}%s${END}\n" \
|
|
"$USER_HOST" "$PORT"
|
|
echo "serving directory:"
|
|
printf " ${BOLD}->>${CYAN} %s${END}\n" "${DIR}"
|
|
|
|
printf "opening ${BOLD}%s${END} using %s\n" "$URL" "$BROWSER"
|
|
echo '---------------'
|
|
"$BROWSER" "$URL" >/dev/null 2>&1 &
|
|
|
|
# first change directory in case python<3.7
|
|
ssh -tL localhost:"$PORT":localhost:"$PORT" "$USER_HOST" \
|
|
"cd $DIR && python3 -m http.server $PORT"
|