tmux session ssh with fzf
This commit is contained in:
parent
907f390899
commit
5c6a78ae72
@ -46,6 +46,7 @@ ctrl-a:toggle-all,\
|
|||||||
ctrl-p:preview-up,\
|
ctrl-p:preview-up,\
|
||||||
ctrl-n:preview-down,\
|
ctrl-n:preview-down,\
|
||||||
ctrl-u:clear-query,\
|
ctrl-u:clear-query,\
|
||||||
tab:toggle+down,\
|
ctrl-q:toggle+down,\
|
||||||
|
tab:replace-query,\
|
||||||
shift-tab:toggle\
|
shift-tab:toggle\
|
||||||
"
|
"
|
||||||
@ -2,17 +2,26 @@
|
|||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
echo -n "ssh server: "
|
SSH_SERVERS="$(grep 'Host ' "${HOME}/.ssh/config" | sed 's/^Host //')"
|
||||||
declare SSH_SERVER
|
HOSTS=$(grep -v '^#' /etc/hosts)
|
||||||
read -r SSH_SERVER
|
ALL_HOSTS="$(echo "$SSH_SERVERS" "$HOSTS" | grep -v '\*'| sed 's/ /\n/g' | sed '/^$/d' | sort | uniq)"
|
||||||
readonly SSH_SERVER
|
|
||||||
|
|
||||||
declare -r SSH_SERVER_SESSION_NAME="${SSH_SERVER//\./_}"
|
SSH_SERVER="$(echo -n "$ALL_HOSTS" | fzf +m --print-query --bind 'tab:replace-query' | tail -n 1)"
|
||||||
declare -r SESSION="ssh-${SSH_SERVER_SESSION_NAME}"
|
|
||||||
|
|
||||||
|
if [[ -z "${SSH_SERVER}" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
SSH_SERVER_SESSION_NAME="${SSH_SERVER//\./-}"
|
||||||
|
SSH_SERVER_SESSION_NAME="${SSH_SERVER_SESSION_NAME//:/-}"
|
||||||
|
SSH_SERVER_SESSION_NAME="${SSH_SERVER_SESSION_NAME%% *}"
|
||||||
|
declare -r SESSION="ssh_${SSH_SERVER_SESSION_NAME}"
|
||||||
|
|
||||||
|
|
||||||
if ! tmux has-session -t "${SESSION}" 2>/dev/null; then
|
if ! tmux has-session -t "${SESSION}" 2>/dev/null; then
|
||||||
tmux new-session -s "${SESSION}" -d -n "1" "ssh ${SSH_SERVER}"
|
tmux new-session -s "${SESSION}" -d -n "1" "ssh ${SSH_SERVER} || read"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tmux switch-client -t "${SESSION}"
|
tmux switch-client -t "${SESSION}"
|
||||||
Loading…
x
Reference in New Issue
Block a user