moving ssh to submodule
This commit is contained in:
parent
c061c1f110
commit
b63d788ad6
116
zsh/ssh
116
zsh/ssh
@ -1,116 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
alias c='WRYN_REMOTE_CONNECTOR'
|
|
||||||
alias cmux='WRYN_REMOTE_CONNECTOR tmux'
|
|
||||||
alias sshc='WRYN_REMOTE_CONNECTOR ssh'
|
|
||||||
alias sshe='$EDITOR $WRYN_SSH_CONNECTION_LIST'
|
|
||||||
alias ssh-add-all='WRYN_SSH_ADD_CREDENTIALS'
|
|
||||||
|
|
||||||
WRYN_SSH_CONNECTION_LIST="$HOME/.config/wryn/ssh-connections"
|
|
||||||
WRYN_SSH_DELIMITER=' *| '
|
|
||||||
|
|
||||||
[ -d "$HOME/.config/wryn" ] && [ ! -f "$WRYN_SSH_CONNECTION_LIST" ] && touch "$WRYN_SSH_CONNECTION_LIST";
|
|
||||||
|
|
||||||
WRYN_SSH_ADD_CREDENTIALS() {
|
|
||||||
local KEY_LIST=$(ssh-add -l 2>/dev/null | awk '{print $3;}')
|
|
||||||
for key in $(grep -slR "PRIVATE" "$HOME/.ssh"); do
|
|
||||||
[ -f "$key.pub" ] \
|
|
||||||
&& echo $KEY_LIST | grep -q $(awk '{print $NF;}' $key.pub) \
|
|
||||||
|| echo $KEY_LIST | grep -q $key \
|
|
||||||
|| ssh-add "$key" >/dev/null 2>&1;
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function WRYN_REMOTE_CONNECTOR() {
|
|
||||||
TMP_AUTH_SOCK=$SSH_AUTH_SOCK;
|
|
||||||
TMP_AGENT_PID=$SSH_AGENT_PID;
|
|
||||||
unset SSH_AUTH_SOCK SSH_AGENT_PID
|
|
||||||
eval $(ssh-agent -s) >/dev/null 2>&1;
|
|
||||||
|
|
||||||
WRYN_SSH_ADD_CREDENTIALS;
|
|
||||||
|
|
||||||
local COMMAND="$1";
|
|
||||||
local CONNECTION="$2";
|
|
||||||
|
|
||||||
local SSH_ID="^$CONNECTION$WRYN_SSH_DELIMITER"
|
|
||||||
|
|
||||||
[[ $COMMAND != 'tmux' ]] && [ ! $CONNECTION ] \
|
|
||||||
&& { echo 'Must specify a connection'; return 1 };
|
|
||||||
|
|
||||||
grep -q "$SSH_ID" "$WRYN_SSH_CONNECTION_LIST" >/dev/null 2>&1 \
|
|
||||||
|| [ ! $CONNECTION ] \
|
|
||||||
|| { echo 'No such connection'; return 2 };
|
|
||||||
|
|
||||||
case $COMMAND in;
|
|
||||||
sshfs ) sshfs $(WRYN_SSH_PARSE_ARGS $SSH_ID):$3 ${@:4} ;;
|
|
||||||
ssh ) ssh $(WRYN_SSH_PARSE_ARGS $SSH_ID) ${@:3} ;;
|
|
||||||
cp-to ) scp ${@:5} $(WRYN_SCP_PARSE_ARGS $SSH_ID $3):$4 ;;
|
|
||||||
cp-from ) scp ${@:5} $(WRYN_SCP_PARSE_ARGS $SSH_ID):$3 $4 ;;
|
|
||||||
copy-id ) ssh-copy-id ${@:3} $(WRYN_SSH_PARSE_ARGS $SSH_ID) ;;
|
|
||||||
tmux ) WRYN_REMOTE_TMUX "$SSH_ID" ${@:3} ;;
|
|
||||||
|
|
||||||
* ) echo "$COMMAND not implemented" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
ssh-agent -k >/dev/null 2>&1;
|
|
||||||
export SSH_AUTH_SOCK=$TMP_AUTH_SOCK;
|
|
||||||
export SSH_AGENT_PID=$TMP_AGENT_PID;
|
|
||||||
}
|
|
||||||
_WRYN_REMOTE_CONNECTOR() {
|
|
||||||
local state;
|
|
||||||
_arguments \
|
|
||||||
'1: :->remote_command'\
|
|
||||||
'2: :->connections'\
|
|
||||||
':: :->remote_args'\
|
|
||||||
;
|
|
||||||
case "$state" in
|
|
||||||
remote_command)
|
|
||||||
compadd -X 'Choose a connection command:' \
|
|
||||||
ssh sshfs cp-to cp-from copy-id tmux
|
|
||||||
;;
|
|
||||||
connections)
|
|
||||||
compadd -X 'Choose a connection:' $(sed -n "s/$WRYN_SSH_DELIMITER.*//p" "$WRYN_SSH_CONNECTION_LIST")
|
|
||||||
;;
|
|
||||||
remote_args)
|
|
||||||
_files
|
|
||||||
case $words[2] in;
|
|
||||||
ssh ) _ssh;;
|
|
||||||
sshfs ) _sshfs;;
|
|
||||||
cpto | cpfrom ) _scp;;
|
|
||||||
tmux ) _tmux;;
|
|
||||||
ssh-copy-id ) compadd $(ls);;
|
|
||||||
* ) ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
compdef _WRYN_REMOTE_CONNECTOR WRYN_REMOTE_CONNECTOR;
|
|
||||||
|
|
||||||
WRYN_SSH_PARSE_ARGS() {
|
|
||||||
SSH_ID="$1";
|
|
||||||
sed -n "s/$SSH_ID\(.*\)$/\1/p" "$WRYN_SSH_CONNECTION_LIST"
|
|
||||||
}
|
|
||||||
|
|
||||||
WRYN_SCP_PARSE_ARGS() {
|
|
||||||
SSH_ID="$1";
|
|
||||||
[ $2 ]\
|
|
||||||
&& sed -n "s>$SSH_ID *-p \([^ ]*\)\(.*\)$>-P \1 $2\2>p" "$WRYN_SSH_CONNECTION_LIST"\
|
|
||||||
|| sed -n "s/$SSH_ID *-p\(.*\)$/-P\1/p" "$WRYN_SSH_CONNECTION_LIST"
|
|
||||||
}
|
|
||||||
|
|
||||||
WRYN_REMOTE_TMUX() {
|
|
||||||
local SSH_ID="$1"
|
|
||||||
local UTF8_FLAG=$(locale charmap | grep -q 'UTF-8' && echo '-u')
|
|
||||||
|
|
||||||
[[ "$SSH_ID" == "^$WRYN_SSH_DELIMITER" ]] \
|
|
||||||
&& { tmux new-session -As $TMUX_DEFAULT_SESSION_NAME } \
|
|
||||||
|| {
|
|
||||||
[ ! $2 ] \
|
|
||||||
&& ssh $(WRYN_SSH_PARSE_ARGS $SSH_ID) -t tmux $UTF8_FLAG new-session -As $TMUX_DEFAULT_SESSION_NAME \
|
|
||||||
|| {
|
|
||||||
[ $3 ] \
|
|
||||||
&& { ssh $(WRYN_SSH_PARSE_ARGS $SSH_ID) -t tmux $UTF8_FLAG ${@:2}; return 0 } \
|
|
||||||
|| { ssh $(WRYN_SSH_PARSE_ARGS $SSH_ID) -t tmux $UTF8_FLAG new-session -As $2; };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user