tmux session ssh with fzf

This commit is contained in:
thek4n 2024-10-16 21:36:37 +03:00
parent 907f390899
commit 5c6a78ae72
2 changed files with 18 additions and 8 deletions

View File

@ -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\
" "

View File

@ -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}"