|
|
|
|
@@ -1,14 +1,17 @@
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
function showHelp() {
|
|
|
|
|
echo "ssh-proxy [args] command proxy"
|
|
|
|
|
echo "ssh-proxy [args] command cmd_args"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "args :"
|
|
|
|
|
echo " --help Show help"
|
|
|
|
|
echo "command;"
|
|
|
|
|
echo "command :"
|
|
|
|
|
echo " status"
|
|
|
|
|
echo " start profile|port target"
|
|
|
|
|
echo " stop port"
|
|
|
|
|
echo "proxy:"
|
|
|
|
|
echo " startall"
|
|
|
|
|
echo " stopall"
|
|
|
|
|
echo "cmd_args :"
|
|
|
|
|
echo " profile Name of the profile (~/.config/ssh-proxy/*)"
|
|
|
|
|
echo " port Proxy local port (1024-65535)"
|
|
|
|
|
echo " target Proxy target [user@]server[:port]"
|
|
|
|
|
@@ -23,16 +26,31 @@ case ${1} in
|
|
|
|
|
showHelp
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
"start" | "stop");;
|
|
|
|
|
"status" | "startall" | "stopall");;
|
|
|
|
|
"start" | "stop")
|
|
|
|
|
if [ "${2}" == "" ] || [[ "${2}" == */* ]]; then
|
|
|
|
|
showHelp
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
showHelp
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
if [ "${2}" == "" ]; then
|
|
|
|
|
showHelp
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
|
|
function showProxyStatus() {
|
|
|
|
|
if [ -d /tmp/ssh-proxy-"${USER}" ] && [ "$(find /tmp/ssh-proxy-"${USER}" -maxdepth 0 -empty -exec echo 1 \;)" == "" ]; then
|
|
|
|
|
echo -e "Port\tProxy"
|
|
|
|
|
for FILE in /tmp/ssh-proxy-"${USER}"/*; do
|
|
|
|
|
PORT=$(basename "${FILE}")
|
|
|
|
|
PROXY=$(grep 'PROXY=' "${FILE}" | sed 's/PROXY=//')
|
|
|
|
|
echo -e "${PORT}\t${PROXY}"
|
|
|
|
|
done
|
|
|
|
|
else
|
|
|
|
|
echo "No open proxy"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function startProxy() {
|
|
|
|
|
LOCAL_PORT=0
|
|
|
|
|
@@ -95,7 +113,6 @@ function startProxy() {
|
|
|
|
|
|
|
|
|
|
PROXY_ADDRESS="${PROXY_SERVER}"
|
|
|
|
|
if [ ! "${PROXY_USER}" == "" ]; then
|
|
|
|
|
echo ""
|
|
|
|
|
PROXY_ADDRESS="${PROXY_USER}@${PROXY_SERVER}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
@@ -118,6 +135,7 @@ function startProxy() {
|
|
|
|
|
#echo "PROXY_USER=${PROXY_USER}"
|
|
|
|
|
#echo "PROXY_SERVER=${PROXY_SERVER}"
|
|
|
|
|
#echo "PROXY_SERVER_PORT=${PROXY_SERVER_PORT}"
|
|
|
|
|
echo "PROXY=${PROXY_ADDRESS}"
|
|
|
|
|
echo "PID=${PID}"
|
|
|
|
|
} > "${TMP_FILE}"
|
|
|
|
|
}
|
|
|
|
|
@@ -135,8 +153,25 @@ function stopProxy() {
|
|
|
|
|
rm "${TMP_FILE}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function startAll() {
|
|
|
|
|
for FILE in ~/.config/ssh-proxy/*; do
|
|
|
|
|
PROFILE=$(basename "${FILE}")
|
|
|
|
|
startProxy "${PROFILE}"
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function stopAll() {
|
|
|
|
|
for FILE in /tmp/ssh-proxy-"${USER}"/*; do
|
|
|
|
|
PORT=$(basename "${FILE}")
|
|
|
|
|
stopProxy "${PORT}"
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case ${1} in
|
|
|
|
|
"status") showProxyStatus;;
|
|
|
|
|
"start") startProxy "${2}" "${3}";;
|
|
|
|
|
"stop") stopProxy "${2}";;
|
|
|
|
|
"startall") startAll;;
|
|
|
|
|
"stopall") stopAll;;
|
|
|
|
|
*) exit 1;;
|
|
|
|
|
esac
|
|
|
|
|
|