From df4ce2a4b65df450211cd9f45ac5aa67a4735772 Mon Sep 17 00:00:00 2001 From: Kevin Baensch Date: Fri, 18 Nov 2022 16:20:24 +0100 Subject: [PATCH] Add checks to setup script --- sqlproxy_setup.sh | 54 ++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/sqlproxy_setup.sh b/sqlproxy_setup.sh index 1b34ba7..07967bb 100755 --- a/sqlproxy_setup.sh +++ b/sqlproxy_setup.sh @@ -1,21 +1,23 @@ #!/usr/bin/env bash PROJECT_PATH=$(realpath $(dirname $0)) -which myssh > /dev/null 2>&1 -if [ $? -eq 1 ] +# Always copy newest version to bin +mkdir -p $HOME/bin +cp $PROJECT_PATH/script/myssh $HOME/bin/myssh + +# Detect Shell Init Path +if [[ $SHELL =~ bin/bash$ ]] then - mkdir -p $HOME/bin - cp $PROJECT_PATH/script/myssh $HOME/bin/myssh - if [[ ! $PATH =~ $HOME/bin ]] - then - if [[ $SHELL =~ bin/bash$ ]] - then - echo -e 'PATH=$PATH:$HOME/bin' >> $HOME/.bashrc - elif [[ $SHELL =~ bin/zsh$ ]] - then - echo -e 'PATH=$PATH:$HOME/bin' >> $HOME/.zshrc - fi - fi + RC_FILE=.bashrc +elif [[ $SHELL =~ bin/zsh$ ]] +then + RC_FILE=.zshrc +fi + +grep -qe '^PATH=$PATH:$HOME/bin$' $HOME/$RC_FILE 2> /dev/null +if [ ! -z $HOME/$RC_FILE ] && [[ ! $PATH =~ $HOME/bin ]] && [ $? -ne 0 ] +then + echo -e 'PATH=$PATH:$HOME/bin' >> $HOME/$RC_FILE fi if [ ! -f $PROJECT_PATH/etc/ssh/ssh_host_ed25519_key ] @@ -27,11 +29,25 @@ fi read -r -p "Auto generate client keys+config? [Y/n] " GEN_KEYS case $GEN_KEYS in [yY]*) - mkdir -p ~/.ssh - read -r -p "Key Name (should not already exist in ~/.ssh): " KEY_NAME - ssh-keygen -t ed25519 -f ~/.ssh/$KEY_NAME.key -C "$(date --iso-8601)_$(whoami)@$HOST" + mkdir -p $HOME/.ssh + read -r -p "Key Name (will not be overridden if it already exists in ~/.ssh): " KEY_NAME + # Only add key if it does not already exist + if [ ! -f $HOME/.ssh/$KEY_NAME.key ] + then + ssh-keygen -t ed25519 -f $HOME/.ssh/$KEY_NAME.key -C "$(date --iso-8601)_$(whoami)@$HOSTNAME" + fi read -r -p "Target Host: " HOST_NAME - echo -ne "\n\nHost $HOST_NAME\n User sqlproxy\n IdentityFile ~/.ssh/$KEY_NAME.key" >> ~/.ssh/config - echo -e command=\"/sqlproxy_cli.sh\" $(cat ~/.ssh/$KEY_NAME.key.pub) >> $PROJECT_PATH/etc/ssh/.ssh/authorized_keys;; + # Check if there is an entry for $HOST_NAME in the users ssh config + grep -qe "^Host $HOST_NAME$" $HOME/.ssh/config + if [ $? -ne 0 ] + then + echo -ne "\n\nHost $HOST_NAME\n User sqlproxy\n IdentityFile ~/.ssh/$KEY_NAME.key" >> $HOME/.ssh/config + fi + # Check if public key is already in the containers authorized_keys file + grep -qe "$(cat $HOME/.ssh/$KEY_NAME.key.pub)$" $PROJECT_PATH/etc/ssh/.ssh/authorized_keys + if [ $? -ne 0 ] + then + echo -e command=\"/sqlproxy_cli.sh\" $(cat $HOME/.ssh/$KEY_NAME.key.pub) >> $PROJECT_PATH/etc/ssh/.ssh/authorized_keys + fi;; *) echo -e "Not generating client ssh key.\nPlease put your desired public keys into $PROJECT_PATH/etc/ssh/.ssh/authorized_keys\nAlso add 'command=\"/sqlproxy_cli.sh\" ' in front of your key";; esac