diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2021-11-10 16:57:33 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2021-11-10 16:57:33 -0700 |
commit | 0d7d66c2ae926426ea06dccf01ec2687747368ac (patch) | |
tree | dc1aecaa9aaa44a32dcc8cc4f9ef98f0d7c670bf /bin/ssh-and-tmux | |
parent | 09f0ea7c8d20e892d18fa9d194d0a4d3739cf777 (diff) | |
download | dotfiles-0d7d66c2ae926426ea06dccf01ec2687747368ac.tar.gz |
wofi_ssh, ssh-and-tmux-term for athenet LXCs
Diffstat (limited to 'bin/ssh-and-tmux')
-rwxr-xr-x | bin/ssh-and-tmux | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/bin/ssh-and-tmux b/bin/ssh-and-tmux index 37dc8fb6..87ace865 100755 --- a/bin/ssh-and-tmux +++ b/bin/ssh-and-tmux @@ -10,12 +10,32 @@ # ServerAliveInterval and low ServerAliveCountMax, but that's desirable, # because unresponsive SSH sessions are a massive pain) +getopt=$(getopt -s bash -o "" -l 'container-cmd:,container-name:' -n ssh-and-tmux -- "$@") +eval "set - $getopt" + +while true; do + case "$1" in + '--container-cmd') container_cmd=$2; shift 2; continue ;; + '--container-name') container_name=$2; shift 2; continue ;; + + '--') shift; break ;; + esac +done + host="$1" session="${2:-default}" -prompt="Press any key to reconnect to tmux session [1m$session[0m on [1m$host[0m; d/C-d/C-c to give up .." +cmd="tmux new-session -A -c \$HOME -s $session" +if [ -n "$container_name" ]; then + display_host="$container_name" + cmd="$(printf "$container_cmd" "$container_name") -- $cmd" +else + display_host="$host" +fi +echo -ne "\033]0;tmux $session on $display_host\007" +prompt="Press any key to reconnect to tmux session [1m$session[0m on [1m$display_host[0m; d/C-d/C-c to give up .." while true; do - ssh -t "$host" "tmux new-session -A -s $session" + ssh -t "$host" "$cmd" clear read -n 1 -r -s -p "$prompt" ch [ "$ch" = $'\04' -o "$ch" = d ] && echo && exit |