ssh-menu initial release

This commit is contained in:
2022-11-21 17:38:39 +01:00
commit bb9bd2f72f
6 changed files with 63 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
rofi-forge-cache-own

13
README.md Normal file
View File

@@ -0,0 +1,13 @@
ssh-menu
========
SSH menu using rofi and forging cache file. By default, it will search for host files named after target hosts in `$INFRA/host/` directory.
You can:
- copy `rofi-forge-cache` as `rofi-forge-cache-own` and adapt to your needs
- copy `rofi-config` as `rofi-config-own` and adapt to your needs
- install with `./install` (will only act on `~/.ssh-menu/` directory) and run with `./ssh-menu`.
Tips:
- you can add ssh options by setting SSH_OPTIONS variable (for example `SSH_OPTIONS=-A ./ssh-menu` will forward SSH agent)
- SSH agent is not loaded by default, I use `keychain` variables set in `~/.keychain/$(hostname)-sh`, adapt to your agent handling method

22
install Executable file
View File

@@ -0,0 +1,22 @@
#! /bin/bash
if [ ! -e /usr/bin/rofi ]; then
echo "error: rofi doesn't seem to be installed"
exit 1
fi
mkdir -p ~/.ssh-menu
# Install rofi-config-own or default rofi-config
if [ -e rofi-config-own ]; then
cp rofi-config-own ~/.ssh-menu/rofi-config
else
cp rofi-config ~/.ssh-menu/rofi-config
fi
# Install rofi-forge-cache-own script or default rofi-forge-cache
if [ -e rofi-forge-cache-own ]; then
cp rofi-forge-cache-own ~/.ssh-menu/rofi-forge-cache
else
cp rofi-forge-cache ~/.ssh-menu/rofi-forge-cache
fi

8
rofi-config Normal file
View File

@@ -0,0 +1,8 @@
configuration {
font: "DejaVu Sans Mono 10";
terminal: "kitty";
ssh-client: "ssh ${SSH_OPTIONS}";
ssh-command: "{terminal} -e sh -c \". ~/.keychain/$(hostname)-sh && {ssh-client} {host}\"";
sidebar-mode: true;
}
@theme "sidebar"

7
rofi-forge-cache Executable file
View File

@@ -0,0 +1,7 @@
#! /bin/bash
# Clean cache
echo -n > ~/.cache/rofi-2.sshcache
# Look for hostfiles named after target names in $INFRA/host/
ls ${INFRA}/host/ | sed "s/^/1 root@/" >> ~/.cache/rofi-2.sshcache

12
ssh-menu Executable file
View File

@@ -0,0 +1,12 @@
#! /bin/bash
# Generate ~/.cache/rofi-2.sshcache
if [ -x ~/.ssh-menu/rofi-forge-cache ]; then
~/.ssh-menu/rofi-forge-cache
else
echo "error: ~/.ssh-menu/rofi-forge-cache doesn't exist or can't be executed"
exit 1
fi
# Launch rofi
rofi -lines 50 -modi ssh -show ssh -config ~/.ssh-menu/rofi-config