Skip to content

Instantly share code, notes, and snippets.

@iammoen
Created January 21, 2020 18:23
Show Gist options
  • Save iammoen/75df9951fd8009d76f657e8f85d5a5e1 to your computer and use it in GitHub Desktop.
Save iammoen/75df9951fd8009d76f657e8f85d5a5e1 to your computer and use it in GitHub Desktop.
bash script function that I put in .zshrc that parses my ssh config file and allows me to select which server I want to ssh into easily.
sshinto() {
declare -a vmArray=( $(sed -nE 's/^Host ([^github])/\1/p' ~/.ssh/config) )
vmArray_ArrayLen=${#vmArray[@]}
re='^[0-9]+$'
if [[ $1 = "" ]]
then
if [[ vmArray_ArrayLen -ne 0 ]]
then
tput setaf 4
echo "SSH options:"
fi
for ((i=1; i<=$vmArray_ArrayLen; i++))
do
echo " "$i. ${vmArray[i]}
done
tput sgr0
echo "Enter number of server"
echo -n "(1 - "$((i - 1))"): "
read server_var
elif [[ $1 =~ $re ]]
then
server_var=$1
else
unset server_var
echo "BAD INPUT RECEIVED. Should be a number indicating the server index."
fi
if [[ $server_var =~ $re ]] && [[ $server_var -le $vmArray_ArrayLen ]]
then
ssh ${vmArray[$server_var]}
else
echo "${server_var} is not a valid server index"
unset server_var
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment