diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2026-07-04 21:40:18 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2026-07-04 21:40:18 +0200 |
| commit | e016de2d214752242ebde664091af86ed9cd881c (patch) | |
| tree | 120c577224db02d1cfab720d8073eb32b9f4c565 /scripts | |
| parent | bbb1de5abb5ba94dd0d29d7175f86e6f6d6d188f (diff) | |
| download | config-e016de2d214752242ebde664091af86ed9cd881c.tar.gz config-e016de2d214752242ebde664091af86ed9cd881c.zip | |
Add new script to spawn ssh session
Diffstat (limited to '')
| -rwxr-xr-x | scripts/ssh-terminal | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/ssh-terminal b/scripts/ssh-terminal new file mode 100755 index 0000000..99a240a --- /dev/null +++ b/scripts/ssh-terminal | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Prompts the user to select a known host from $HOME/.ssh/config, | ||
| 4 | # then connects to it via a configurable client (default: mosh) and | ||
| 5 | # executes a command on the server (default: tmux). | ||
| 6 | # Requires: dmenu (or similar), st (or other terminal), an ssh client | ||
| 7 | |||
| 8 | # Usage: ssh-terminal [-m menu] [-s ssh_client] [-e server_cmd] | ||
| 9 | |||
| 10 | menu="dmenu" | ||
| 11 | terminal="st" | ||
| 12 | ssh_client="mosh" | ||
| 13 | server_cmd="tmux" | ||
| 14 | |||
| 15 | usage() { | ||
| 16 | echo "Usage: ssh-terminal [-m MENU] [-s SSH_CLIENT] [-e SERVER_CMD]" | ||
| 17 | } | ||
| 18 | |||
| 19 | while getopts "e:m:s:" opt; do | ||
| 20 | case "$opt" in | ||
| 21 | e) | ||
| 22 | server_cmd="$OPTARG" | ||
| 23 | ;; | ||
| 24 | m) | ||
| 25 | menu="$OPTARG" | ||
| 26 | ;; | ||
| 27 | s) | ||
| 28 | ssh_client="$OPTARG" | ||
| 29 | ;; | ||
| 30 | *) | ||
| 31 | usage | ||
| 32 | exit 1 | ||
| 33 | ;; | ||
| 34 | esac | ||
| 35 | done | ||
| 36 | |||
| 37 | selection=$(grep '^Host' $HOME/.ssh/config | awk '{print $2}' | sort | $menu) | ||
| 38 | if [ -n "$selection" ]; then | ||
| 39 | echo "Executing: " | ||
| 40 | echo $terminal "$ssh_client" "$selection" "$server_cmd" | ||
| 41 | $terminal "$ssh_client" "$selection" "$server_cmd" | ||
| 42 | fi | ||
