Add postgres cli support.
This commit is contained in:
parent
9083bfc5ad
commit
264cf17de5
3 changed files with 28 additions and 23 deletions
|
@ -72,7 +72,6 @@ do
|
||||||
then
|
then
|
||||||
LOCAL_IP=$(jq -r '.NetworkSettings.Networks | if has($ENV.NETWORK_NAME) then .[$ENV.NETWORK_NAME].IPAddress else first(.[].IPAddress) end' <<< "${CONTAINER_DATA}");
|
LOCAL_IP=$(jq -r '.NetworkSettings.Networks | if has($ENV.NETWORK_NAME) then .[$ENV.NETWORK_NAME].IPAddress else first(.[].IPAddress) end' <<< "${CONTAINER_DATA}");
|
||||||
fi
|
fi
|
||||||
# export LOCAL_IP
|
|
||||||
|
|
||||||
# Read Label values
|
# Read Label values
|
||||||
CONTAINER_LABELS=$(jq '.Labels' <<< "${CONTAINER_DATA}");
|
CONTAINER_LABELS=$(jq '.Labels' <<< "${CONTAINER_DATA}");
|
||||||
|
|
44
script/myssh
44
script/myssh
|
@ -15,7 +15,7 @@ SYNTAX connect host [-u user] [-p password] [-c client]
|
||||||
get_template_string() {
|
get_template_string() {
|
||||||
if [ -z "$SQL_CLI_TEMPLATE" ]
|
if [ -z "$SQL_CLI_TEMPLATE" ]
|
||||||
then
|
then
|
||||||
if [ $(uname -s) = "Linux" ]
|
if [ "$(uname -s)" = "Linux" ]
|
||||||
then
|
then
|
||||||
SQL_CLI_TEMPLATE='mysql --protocol=TCP -u $MYSQL_USERNAME -p$MYSQL_PASSWORD -h localhost -P 6033'
|
SQL_CLI_TEMPLATE='mysql --protocol=TCP -u $MYSQL_USERNAME -p$MYSQL_PASSWORD -h localhost -P 6033'
|
||||||
else
|
else
|
||||||
|
@ -33,24 +33,23 @@ get_template_string() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ssh_status() {
|
ssh_status() {
|
||||||
ssh -O check -S $HOME/.ssh/controlmasters/%r@%h:%p $SQL_PROXY_HOST > /dev/null 2>&1
|
ssh -O check -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" > /dev/null 2>&1
|
||||||
echo $?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
mkdir -p $HOME/.ssh/controlmasters
|
mkdir -p "${HOME}/.ssh/controlmasters"
|
||||||
|
|
||||||
if [ $(ssh_status) -ne 0 ]
|
if ! ssh_status
|
||||||
then
|
then
|
||||||
echo "" > $CONNECTION_CACHE
|
echo "" > "${CONNECTION_CACHE}"
|
||||||
ssh -o "ControlPersist=10m" -M -S $HOME/.ssh/controlmasters/%r@%h:%p $SQL_PROXY_HOST q
|
ssh -o "ControlPersist=10m" -M -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" q
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnect() {
|
disconnect() {
|
||||||
if [ $(ssh_status) -eq 0 ]
|
if ssh_status
|
||||||
then
|
then
|
||||||
ssh -O stop -S $HOME/.ssh/controlmasters/%r@%h:%p $SQL_PROXY_HOST q
|
ssh -O stop -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" q
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,32 +58,32 @@ disconnect() {
|
||||||
# $1 - target ip
|
# $1 - target ip
|
||||||
# $2 - target port
|
# $2 - target port
|
||||||
port_forward() {
|
port_forward() {
|
||||||
ACTIVE_HOST=$(cat $CONNECTION_CACHE)
|
ACTIVE_HOST=$(cat "${CONNECTION_CACHE}")
|
||||||
if [ -z "${ACTIVE_HOST}" ] || [ "${ACTIVE_HOST}" != "$1:$2" ]
|
if [ -z "${ACTIVE_HOST}" ] || [ "${ACTIVE_HOST}" != "$1:$2" ]
|
||||||
then
|
then
|
||||||
if [ -n "${ACTIVE_HOST}" ]
|
if [ -n "${ACTIVE_HOST}" ]
|
||||||
then
|
then
|
||||||
ssh -O cancel -L 6033:${ACTIVE_HOST} -S ${HOME}/.ssh/controlmasters/%r@%h:%p ${SQL_PROXY_HOST} q
|
ssh -O cancel -L "6033:${ACTIVE_HOST}" -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" q
|
||||||
fi
|
fi
|
||||||
ssh -O forward -L 6033:$1:$2 -S ${HOME}/.ssh/controlmasters/%r@%h:%p ${SQL_PROXY_HOST}
|
ssh -O forward -L "6033:$1:$2" -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}"
|
||||||
fi
|
fi
|
||||||
echo "$1:$2" > "${CONNECTION_CACHE}"
|
echo "$1:$2" > "${CONNECTION_CACHE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
ls_hosts() {
|
ls_hosts() {
|
||||||
ssh -S ${HOME}/.ssh/controlmasters/%r@%h:%p "${SQL_PROXY_HOST}" ls
|
ssh -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" ls
|
||||||
}
|
}
|
||||||
|
|
||||||
get_host() {
|
get_host() {
|
||||||
if [ $1 = '' ]
|
if [ "$1" = '' ]
|
||||||
then
|
then
|
||||||
printf 'Please specify the host to connect to.\nRun "myssh ls" to list all available hosts.\n'
|
printf 'Please specify the host to connect to.\nRun "myssh ls" to list all available hosts.\n'
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
TARGET_HOST_DATA=$(ssh -S ${HOME}/.ssh/controlmasters/%r@%h:%p "${SQL_PROXY_HOST}" "get $1")
|
TARGET_HOST_DATA=$(ssh -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" "get $1")
|
||||||
if [ "${TARGET_HOST_DATA}" = '' ]
|
if [ "${TARGET_HOST_DATA}" = '' ]
|
||||||
then
|
then
|
||||||
printf 'No such host: "%s"\n' $1
|
printf 'No such host: "%s"\n' "$1"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -98,7 +97,7 @@ get_host() {
|
||||||
# $4 - username (optional)
|
# $4 - username (optional)
|
||||||
# $5 - password (optional)
|
# $5 - password (optional)
|
||||||
set_host_env() {
|
set_host_env() {
|
||||||
if [ "$1" = 'mysql' ] || [ "$1" = 'psql' ]
|
if [ "$1" = 'mysql' ] || [ "$1" = 'postgres' ]
|
||||||
then
|
then
|
||||||
TARGET_HOST_TYPE="$1"
|
TARGET_HOST_TYPE="$1"
|
||||||
else
|
else
|
||||||
|
@ -147,14 +146,20 @@ run_client() {
|
||||||
else
|
else
|
||||||
SHOW_CLI_HELP=true
|
SHOW_CLI_HELP=true
|
||||||
fi
|
fi
|
||||||
elif [ "${$1}" = 'psql' ]
|
elif [ "$1" = 'postgres' ]
|
||||||
then
|
then
|
||||||
|
if which psql >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
psql "postgresql://$2:$3@${SQL_PROXY_HOST}:6033/postgres"
|
||||||
|
else
|
||||||
SHOW_CLI_HELP=true
|
SHOW_CLI_HELP=true
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${SHOW_CLI_HELP}" = true ]
|
if [ "${SHOW_CLI_HELP}" = true ]
|
||||||
then
|
then
|
||||||
printf 'No %s client binary found.\nYou can maually establish a connection using the following data.\nhost:\t%s\nport:\t6033\nuser:\t%s\npassword:\t%s\n' "$1" "${SQL_PROXY_HOST}" '3306' "$2" "$3"
|
printf 'No %s client binary found.\nYou can maually establish a connection using the following data.\n' "$1"
|
||||||
|
printf 'host:\t%s\nport:\t%s\nuser:\t%s\npassword:\t%s\n' "${SQL_PROXY_HOST}" '6033' "$2" "$3"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,6 +193,7 @@ case "${MAIN_OPTION}" in
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
get_host "${TARGET_HOST}"
|
get_host "${TARGET_HOST}"
|
||||||
|
# Do not quote this.
|
||||||
set_host_env ${TARGET_HOST_DATA}
|
set_host_env ${TARGET_HOST_DATA}
|
||||||
port_forward "${TARGET_HOST_IP}" "$TARGET_HOST_PORT"
|
port_forward "${TARGET_HOST_IP}" "$TARGET_HOST_PORT"
|
||||||
if [ -n "${TARGET_HOST_USERNAME}" ] && [ -n "${TARGET_HOST_PASSWORD}" ]
|
if [ -n "${TARGET_HOST_USERNAME}" ] && [ -n "${TARGET_HOST_PASSWORD}" ]
|
||||||
|
|
|
@ -18,7 +18,7 @@ label_hook() {
|
||||||
if [ "${LOCAL_DB_TYPE}" = "mysql" ]
|
if [ "${LOCAL_DB_TYPE}" = "mysql" ]
|
||||||
then
|
then
|
||||||
LOCAL_DB_PORT='3306'
|
LOCAL_DB_PORT='3306'
|
||||||
elif [ "${LOCAL_DB_TYPE}" = "psql" ]
|
elif [ "${LOCAL_DB_TYPE}" = "postgres" ]
|
||||||
then
|
then
|
||||||
LOCAL_DB_PORT='5432'
|
LOCAL_DB_PORT='5432'
|
||||||
fi
|
fi
|
||||||
|
@ -26,7 +26,7 @@ label_hook() {
|
||||||
}
|
}
|
||||||
|
|
||||||
template_hook() {
|
template_hook() {
|
||||||
if [ "$(jq '((.type == "mysql") or (.type == "psql")) and (.host != "")' <<< "${PARTIAL_RESULT}" 2> /dev/null)" = true ]
|
if [ "$(jq '((.type == "mysql") or (.type == "postgres")) and (.host != "")' <<< "${PARTIAL_RESULT}" 2> /dev/null)" = true ]
|
||||||
then
|
then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue