#!/bin/sh set -eu SSH_SERVERS="$(grep 'Host ' "${HOME}/.ssh/config" | sed 's/^Host //')" HOSTS="$(grep -v '^#' /etc/hosts)" HISTORY_HOSTS="$(grep ssh "${HOME}/.zsh_history" | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')" ALL_HOSTS="$(echo "$SSH_SERVERS" "$HOSTS" "$HISTORY_HOSTS" | grep -v '\*'| sed 's/ /\n/g ; /^$/d' | sort | uniq | tac)" SSH_SERVER="$(echo "$ALL_HOSTS" | fzf +m --print-query --bind 'tab:replace-query' | tail -n 1)" if [ -z "${SSH_SERVER}" ]; then exit 0 fi SSH_SERVER_SESSION_NAME="$(echo "${SSH_SERVER%% *}" | sed 's/\./\-/g ; s/\:/\-/g')" readonly SESSION="ssh_${SSH_SERVER_SESSION_NAME}" if ! tmux has-session -t "${SESSION}" 2>/dev/null; then tmux new-session -s "${SESSION}" -d -n "1" "TERM=xterm ssh '${SSH_SERVER}' || read" fi tmux set-option -t "${SESSION}" status off tmux set-option -t "${SESSION}" prefix None tmux set-option -t "${SESSION}" key-table off tmux switch-client -t "${SESSION}"