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