Initial Commit

This commit is contained in:
Patrick Niebeling
2025-07-18 09:13:34 +02:00
parent b0daf097d3
commit 160e478351
3 changed files with 154 additions and 0 deletions

63
sshs.bash Normal file
View File

@@ -0,0 +1,63 @@
#!/bin/bash
KNOWN_HOSTS="$HOME/.ssh/known_hosts"
# Hosts extrahieren ignoriert gehashte Zeilen
HOSTS=$(awk '
{
split($1, hosts, ",");
for (i in hosts)
if (substr(hosts[i], 1, 1) != "|")
print hosts[i];
}
' "$KNOWN_HOSTS" | sort -u)
# Eingabe mit fzf (Suchfenster)
INPUT=$( (echo "$HOSTS") | fzf --prompt="SSH zu Host (neu eingeben möglich): " --height=100% --layout=reverse --border --print-query)
# fzf gibt als erstes die Suchanfrage aus, dann die Auswahl
# split in erste Zeile (Query) und zweite Zeile (Auswahl)
readarray -t LINES <<< "$INPUT"
QUERY="${LINES[0]}"
SELECTED="${LINES[1]}"
# Wenn nichts eingegeben und nichts ausgewählt → Abbruch
if [[ -z "$QUERY" && -z "$SELECTED" ]]; then
exit 0
fi
# Wenn etwas ausgewählt wurde, nutze das, sonst das Query (freie Eingabe)
if [[ -n "$SELECTED" ]]; then
TARGET_RAW="$SELECTED"
else
TARGET_RAW="$QUERY"
fi
# Port & Host extrahieren aus Known Hosts Format [host]:port oder normal
if [[ "$TARGET_RAW" =~ ^\[([^\]]+)\]:(.+)$ ]]; then
HOST="${BASH_REMATCH[1]}"
PORT="${BASH_REMATCH[2]}"
else
HOST="$TARGET_RAW"
PORT=""
fi
# Port-Abfrage nur wenn kein Port aus known_hosts gesetzt
if [[ -z "$PORT" ]]; then
read -rp "🔢 Port (leer für 22): " PORT
PORT=${PORT:-22}
fi
# User-Abfrage
read -rp "👤 Benutzername (leer für aktuellen User: $USER): " SSH_USER
if [[ -n "$SSH_USER" ]]; then
TARGET="${SSH_USER}@${HOST}"
else
TARGET="$HOST"
fi
echo -e "\n🔌 Verbinde mit: $TARGET (Port $PORT)"
sleep 0.5
exec ssh -p "$PORT" "$TARGET"