#!/bin/bash # Author: Nils Gerstner # Last revision: 26st Januray 2019 # Version: v1.5 # Description: ssh into server from array # The following variables should be put inside a file, and sourced: blue="\e[38;5;25m" lightblue="\e[38;5;81m" green="\033[0;32m" red="\e[38;5;09m" yellow="\e[38;5;11m" grey="\e[38;5;247m" orange="\e[38;5;208m" nc="\033[0m" bold="\033[1m" sshserver+=("exampleuser@example.com") sshcomment+=("Example server") sshcolor+=("$red") sshserver+=("exampleuser@example2.com") sshcomment+=("Second examople server") sshcolor+=("$orange") sshserver+=("exampleuser@example3.com") sshcomment+=("Third example server") sshcolor+=("$yellow") sshserver+=("exampleuser@example4.com") sshcomment+=("Fourth example server") sshcolor+=("$green") pad=" ................................................." #pad=" -------------------------------------------------" if [ -z "${1}" ]; then printf "$grey\e[7m%s$nc\n" "S E R V E R L I S T :" for key in "${!sshserver[@]}"; do printf "$grey%2d) " "$(( ${key}+1 ))" printf "${sshcolor[$key]}%s$grey%s${sshcolor[$key]}%s\n$nc" "${sshserver[$key]}" "${pad:0:$((75-${#sshserver[$key]}-${#sshcomment[$key]}))}" " ${sshcomment[$key]}" done fi # echo # if [ -z $1 ]; then # echo "Please choose a server to connect to" # read pc # #echo # else # pc="${1}" # fi re='^[0-9]+$' if [ -z $1 ]; then echo "Please choose a server to connect to" read pc #echo else pc="${1}" fi [[ $pc -eq $pc ]] && echo true || echo false #while ! [[ $pc =~ '^[0-9]+$' ]]; do while [[ $pc -ne $pc && $pc -gt $(($key+1)) && $ps -lt 0 ]]; do >&2 echo "error: '${pc}' is not a number between 1 and $(($key+1))"; echo "Please choose a server to connect to" read pc done # Login to server. If login fails, ssh-copy-id to server and try again. printf "${sshcolor[$(( pc-1 ))]}%s$bold%s\n$nc" "Connecting to " "${sshserver[$(( $pc-1 ))]}" ssh -o PasswordAuthentication=no -o ConnectTimeout=7 ${sshserver[$(( $pc-1 ))]} #ssh -o PasswordAuthentication=no -o ConnectTimeout=7 ${sshserver[$(( $pc-1 ))]} || \ # (>&2 printf "No Password set\n\n"; \ # ssh-copy-id -o ConnectTimeout=7 ${sshserver[$(( $pc-1 ))]} 2>/dev/null; \ # ssh -o ConnectTimeout=7 ${sshserver[$(( $pc-1 ))]}) unset sshserver; unset sshcomment & printf "$nc" printf "$nc"