ssh scwrypts extension + moved dotwryn scwrypts extension deeper
This commit is contained in:
46
scwrypts/ssh/lib/connection/parse.module.zsh
Normal file
46
scwrypts/ssh/lib/connection/parse.module.zsh
Normal 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 '|'
|
||||
}
|
49
scwrypts/ssh/lib/ssh.module.zsh
Normal file
49
scwrypts/ssh/lib/ssh.module.zsh
Normal 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
|
||||
}
|
36
scwrypts/ssh/lib/tmux.module.zsh
Normal file
36
scwrypts/ssh/lib/tmux.module.zsh
Normal 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[@]}"
|
||||
}
|
||||
|
Reference in New Issue
Block a user