dotfiles/nfrc.sh

80 lines
1.6 KiB
Bash

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