eval "$(fzf --bash)" FMENU="fzf --header=$(basename "$0") \ --layout=reverse \ --exact \ --border=bold \ --border=rounded \ --margin=5% \ --multi \ --color=dark \ --height=95% \ --info=hidden \ --header-first \ --bind change:top \ --prompt" _fzf_compgen_path() { fd --hidden --follow --exclude ".git" --exclude ".cargo" --exclude ".cache" . "$1" } sshto() { ssh $(cat ~/.ssh/config | grep "Host " | awk '{print $2}' | $FMENU "choose host ") } sshapt() { user=$(echo $1 | cut -d@ -f1) prefix=$(echo $1 | cut -d@ -f2) [ -z "$user" ] && user="useraccount" [ -z "$prefix" ] && { apt=$(cat ~/bazis.csv | $FMENU "Выбирай аптеку: ") [ -z "$apt" ] && return 1 prefix=$(echo $apt | cut -d, -f1) } echo "USER: '$user'" echo "PREFIX: $prefix" octet1=10 octet2=0 octet3=0 case "${#prefix}" in 1) octet3=$prefix ;; 2) octet3=$prefix ;; 3) octet2=${prefix:0:2} octet3=${prefix:2:2} ;; 4) octet2=${prefix:0:3} octet3=${prefix:3:3} ;; esac ips="" for i in {100..130..10}; do addr=$octet1.$octet2.$octet3.$i printf "Trying $addr..." nc -z -w 1 $addr 22 [ $? -eq 0 ] && { [ -z "$ips" ] && ips=$addr || ips=$ips'\n'$addr printf " yes!\n" } || printf " no.\n" done addr=$(printf "$ips" | $FMENU "Выбери ПК: ") [ -z "$addr" ] && return 1 ssh $user@$addr } which tailscale > /dev/null && source <(tailscale completion bash) export PATH=$PATH:$HOME/.dotfiles/bin alias hx=helix