feat: add user scripts (backup-menu, ssh-pick, proj) and backup reminder
This commit is contained in:
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# ssh-pick — выбрать SSH-хост через fzf
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SSH_CONFIG_DIR="${HOME}/.ssh/config.d"
|
||||
SSH_CONFIG="${HOME}/.ssh/config"
|
||||
|
||||
_list_hosts() {
|
||||
local configs=()
|
||||
|
||||
if [[ -d "$SSH_CONFIG_DIR" ]]; then
|
||||
configs=("$SSH_CONFIG_DIR"/*.conf)
|
||||
fi
|
||||
[[ -f "$SSH_CONFIG" ]] && configs+=("$SSH_CONFIG")
|
||||
|
||||
for f in "${configs[@]}"; do
|
||||
[[ -f "$f" ]] || continue
|
||||
awk '/^Host [^*]/{
|
||||
sub(/^Host /, "")
|
||||
n = split($0, hosts, " ")
|
||||
for (i = 1; i <= n; i++) print hosts[i]
|
||||
}' "$f"
|
||||
done | sort -u
|
||||
}
|
||||
|
||||
main() {
|
||||
if ! command -v fzf &>/dev/null; then
|
||||
echo "fzf not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local hosts
|
||||
hosts=$(_list_hosts)
|
||||
|
||||
if [[ -z "$hosts" ]]; then
|
||||
echo "No SSH hosts found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local selected
|
||||
selected=$(echo "$hosts" | fzf \
|
||||
--prompt "ssh > " \
|
||||
--header "Enter — подключиться | Ctrl-C — выйти" \
|
||||
--height=40% \
|
||||
--reverse) || exit 0
|
||||
|
||||
echo "▶ ssh $selected"
|
||||
exec ssh "$selected"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user