diff --git a/callUpdate.sh b/src/utils/callUpdate.sh similarity index 87% rename from callUpdate.sh rename to src/utils/callUpdate.sh index cfdc05f4..1859c5ed 100644 --- a/callUpdate.sh +++ b/src/utils/callUpdate.sh @@ -1,10 +1,5 @@ #!/bin/bash -source update.sh -source retrieve.sh -source array.sh -source replace.sh - host="myserver" @@ -53,9 +48,9 @@ function update(){ TCPKeepAlive=$newValue ;; "RemoteForward") - currentValue=$newValue # Assign newValue to currentValue + currentValue=$newValue if [[ -n "$4" ]]; then - newValue=$4 # Update newValue if a fourth argument is provided + newValue=$4 fi allArgument=$(extractBlocks "$RemoteForward") RemoteForward=$(replaceFirstOccurrence "$allArgument" "$currentValue" "$newValue") diff --git a/create.sh b/src/utils/create.sh similarity index 60% rename from create.sh rename to src/utils/create.sh index 8cb02c13..aaca6010 100644 --- a/create.sh +++ b/src/utils/create.sh @@ -1,21 +1,3 @@ -dummy=config - -#create_ssh_config() { -# HOST_NAME="$1" -# HOST_ENTRY=$(cat <> $dummy + echo "$HOST_ENTRY" >> $CONFIG echo "Configuration for $HOST_NAME created." fi } diff --git a/delete.sh b/src/utils/delete.sh similarity index 85% rename from delete.sh rename to src/utils/delete.sh index 1bc42954..8ef74bc2 100644 --- a/delete.sh +++ b/src/utils/delete.sh @@ -1,5 +1,4 @@ -dummy=config delete_ssh_config() { HOST_NAME="$1" @@ -12,7 +11,7 @@ delete_ssh_config() { $1 == "Host" && $2 == host {skip = 1} $1 == "Host" && $2 != host && skip {skip = 0; print ""} !skip {print} - ' $dummy > "$TEMP_FILE" && mv "$TEMP_FILE" $dummy + ' $CONFIG > "$TEMP_FILE" && mv "$TEMP_FILE" $CONFIG echo "Configuration for $HOST_NAME deleted." } diff --git a/array.sh b/src/utils/dependencies/array.sh similarity index 100% rename from array.sh rename to src/utils/dependencies/array.sh diff --git a/src/utils/dependencies/config.sh b/src/utils/dependencies/config.sh new file mode 100644 index 00000000..937ab62d --- /dev/null +++ b/src/utils/dependencies/config.sh @@ -0,0 +1,2 @@ +#CONFIG=~/.ssh/config +CONFIG=~/Projects/luftballon/config # Test \ No newline at end of file diff --git a/read.sh b/src/utils/dependencies/read.sh similarity index 90% rename from read.sh rename to src/utils/dependencies/read.sh index 137fa7ad..8b0c8200 100644 --- a/read.sh +++ b/src/utils/dependencies/read.sh @@ -1,6 +1,5 @@ get_ssh_config_values() { HOST_NAME=$1 - CONFIG_FILE=config FOUND_HOST=0 while IFS= read -r line; do @@ -12,7 +11,7 @@ get_ssh_config_values() { elif [[ $FOUND_HOST -eq 1 ]]; then echo "$line" fi - done < "$CONFIG_FILE" + done < "$CONFIG" if [ $FOUND_HOST -eq 0 ]; then echo "No configuration found for $HOST_NAME." diff --git a/replace.sh b/src/utils/dependencies/replace.sh similarity index 100% rename from replace.sh rename to src/utils/dependencies/replace.sh diff --git a/retrieve.sh b/src/utils/dependencies/retrieve.sh similarity index 98% rename from retrieve.sh rename to src/utils/dependencies/retrieve.sh index c19a7042..a5f48d86 100644 --- a/retrieve.sh +++ b/src/utils/dependencies/retrieve.sh @@ -1,4 +1,3 @@ -source read.sh extractSshConfigToVariables() { # Capture the output of get_ssh_config_values CONFIG_OUTPUT=$(get_ssh_config_values "$1") diff --git a/src/utils/driver.sh b/src/utils/driver.sh new file mode 100644 index 00000000..3a424282 --- /dev/null +++ b/src/utils/driver.sh @@ -0,0 +1,39 @@ +source load.sh + +function sshConfigManagerUsage() { + echo "Usage: driver [options]" + echo "" + echo "Commands:" + echo " create Create a new SSH configuration" + echo " update Update an existing SSH configuration" + echo " delete Delete an SSH configuration" + echo "" + echo "Options:" + echo " -h, --help Show help information" +} + +function driver() { + + # Check if at least one argument is provided + if [ $# -eq 0 ]; then + sshConfigManagerUsage + fi + + # Execute the appropriate command + case "$1" in + create) + create "${@:2}" + ;; + update) + callUpdate "${@:2}" + ;; + delete) + delete "${@:2}" + ;; + *) + echo "Error: Invalid command." + sshConfigManagerUsage + ;; + esac + +} \ No newline at end of file diff --git a/src/utils/load.sh b/src/utils/load.sh new file mode 100644 index 00000000..5eada01f --- /dev/null +++ b/src/utils/load.sh @@ -0,0 +1,11 @@ +manageConfigPath=$(pwd) +source $manageConfigPath/dependencies/config.sh +source $manageConfigPath/dependencies/array.sh +source $manageConfigPath/dependencies/read.sh +source $manageConfigPath/dependencies/replace.sh +source $manageConfigPath/dependencies/retrieve.sh + +source $manageConfigPath/create.sh +source $manageConfigPath/update.sh +source $manageConfigPath/delete.sh +source $manageConfigPath/callUpdate.sh diff --git a/update.sh b/src/utils/update.sh similarity index 62% rename from update.sh rename to src/utils/update.sh index b37ebd7e..4a36e1f0 100644 --- a/update.sh +++ b/src/utils/update.sh @@ -1,5 +1,3 @@ -source create.sh -dummy=config update_ssh_config() { HOST_NAME="$1" TEMP_FILE=$(mktemp) @@ -11,10 +9,8 @@ update_ssh_config() { $1 == "Host" && $2 == host {skip = 1} $1 == "Host" && $2 != host && skip {skip = 0; print ""} !skip {print} - ' $dummy > "$TEMP_FILE" && mv "$TEMP_FILE" $dummy + ' $CONFIG > "$TEMP_FILE" && mv "$TEMP_FILE" $CONFIG create_ssh_config "$@" echo "Configuration for $HOST_NAME updated." } - -#update_ssh_config "remoteserver" "newremoteserver.com" "newremoteuser" "newremoteport" "/new/path/to/remote/server/private/key" "2222" "88"