ssh scwrypts extension + moved dotwryn scwrypts extension deeper

This commit is contained in:
2023-07-20 14:49:06 -06:00
parent 8ec32af38e
commit 8ab8647402
28 changed files with 357 additions and 3 deletions

View File

@ -0,0 +1,46 @@
#####################################################################
DEPENDENCIES+=()
REQUIRED_ENV+=()
#####################################################################
PARSE_CONNECTION() {
[ ! $CONNECTION ] && [ ! $REMOTE_NAME ] && {
ERROR 'cannot parse connection without specifying CONNECTION or REMOTE_NAME'
return 1
}
[ $REMOTE_NAME ] && CONNECTION=$(GET_CONNECTION $REMOTE_NAME)
[ ! $CONNECTION ] && {
ERROR "no such connection with name '$REMOTE_NAME'"
}
local CONNECTION_DETAILS=$(echo $CONNECTION | sed 's/|/ /g;')
REMOTE_NAME=$(echo $CONNECTION_DETAILS | awk '{print $1;}')
REMOTE_HOST=$(echo $CONNECTION_DETAILS | awk '{print $2;}')
REMOTE_ARGS+=($(echo $CONNECTION_DETAILS | awk '{$1=$2="";}1'))
}
GET_CONNECTIONS() {
(
echo 'localhost | localhost'
echo "$(hostnamectl --static) | localhost"
sed -n 's/#.*//;s/ \+$//;/./p' "$REMOTE_CONNECTIONS_FILE"
) | sort -u
}
GET_CONNECTION() {
[ ! $1 ] && return 1
GET_CONNECTIONS | grep "^$1 *|" | head -n1
}
GET_CONNECTION_NAMES() {
echo ($(GET_CONNECTIONS | awk '{print $1;}'))
}
IS_VALID_CONNECTION_NAME() {
GET_CONNECTION $1 | grep -q '|'
}

View File

@ -0,0 +1,49 @@
#####################################################################
DEPENDENCIES+=(
ssh
)
REQUIRED_ENV+=()
use connection/parse --group remote
#####################################################################
[ ! $REMOTE_DEFAULT_SHELL ] && REMOTE_DEFAULT_SHELL=(zsh -l)
REMOTE__LOGIN() {
local READ_COMMAND=0
[ ! $REMOTE_NAME ] && REMOTE_NAME=$1
[ $REMOTE_NAME ] && {
STATUS "connecting to $REMOTE_NAME"
}
PARSE_CONNECTION
[ ! $REMOTE_HOST ] && {
ERROR "could not parse REMOTE_HOST from REMOTE_NAME;
check the configuration file for errors"
return 1
}
[[ $REMOTE_HOST =~ ^localhost$ ]] && {
WARNING 'performing login to localhost'
eval "cd; "${REMOTE_DEFAULT_SHELL[@]} ${REMOTE_SHELL_ARGS[@]}
return $?
}
ssh -t ${REMOTE_ARGS[@]} $REMOTE_HOST "$REMOTE_DEFAULT_SHELL ${REMOTE_SHELL_ARGS[@]}"
}
REMOTE__EXECUTE() {
[ ! $REMOTE_COMMAND ] && REMOTE_COMMAND="$@"
[ ! $REMOTE_COMMAND ] && {
ERROR 'no REMOTE_COMMAND provided!'
return 1
}
REMOTE_SHELL_ARGS=(-c "'$REMOTE_COMMAND'") REMOTE__LOGIN
}

View File

@ -0,0 +1,36 @@
#####################################################################
DEPENDENCIES+=(
tmux
)
REQUIRED_ENV+=()
use ssh --group remote
#####################################################################
REMOTE_CONNECT_TMUX() {
local REMOTE_NAME="$1"
local USAGE="
usage: REMOTE_NAME
Connect to remote tmux session on '$REMOTE_NAME'
"
local REMOTE_HOST
local REMOTE_ARGS=()
IS_VALID_CONNECTION_NAME $REMOTE_NAME || ERROR "invalid REMOTE_NAME '$REMOTE_NAME'"
CHECK_ERRORS
local TMUX_ARGS=()
# enforce UTF-8 if supported by host locale
TMUX_ARGS+=($(locale charmap | grep -q 'UTF-8' && echo '-u'))
# create or connect to session
TMUX_ARGS+=(new-session -As wryn)
REMOTE__EXECUTE "tmux ${TMUX_ARGS[@]}"
}