76 lines
1.6 KiB
Bash
76 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
|