#!/bin/bash while true ; do # Checks if [ -z "$INTERVAL" ] ; then echo "INTERVAL is not set." exit 3 fi if [ -z "$GIT_REPO_BRANCH" ] ; then echo "GIT_REPO_BRANCH is not set." exit 3 fi if [ -z "$GIT_USERNAME" ] ; then echo "GIT_USERNAME is not set." exit 3 fi if [ -z "$GIT_USER_MAIL" ] ; then echo "GIT_USER_MAIL is not set." exit 3 fi if [ -z "$GIT_REPO_REMOTE_NAME" ] ; then echo "GIT_REPO_REMOTE_NAME is not set." exit 3 fi if [ -z "$DEVICES" ] ; then echo "DEVICES is not set." exit 3 fi if [ -z "$GIT_REPO_DEPLOY_KEY" ] ; then echo "GIT_REPO_DEPLOY_KEY is not set." exit 3 fi if [ -z "$GIT_REPO_URL" ] ; then echo "GIT_REPO_URL is not set." exit 3 fi GIT_REPO_PATH=$(mktemp -d) git config --global user.email "$GIT_USER_MAIL" git config --global user.name "$GIT_USERNAME" echo clone pwd GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -i $GIT_REPO_DEPLOY_KEY" git clone "$GIT_REPO_URL" "$GIT_REPO_PATH" --quiet cd "$GIT_REPO_PATH" # Save the current value of IFS to restore later OLD_IFS=$IFS # Set the IFS to a comma to split the values IFS=',' while read -r FQDN USERNAME SSH_KEY_PATH; do # bereinige FQDN FQDN=$(echo "$FQDN" | tr -d "[:space:]") # prüfe ob Key existiert if [ ! -e "$SSH_KEY_PATH" ] ; then echo "Error: File $SSH_KEY_PATH does not exist" echo "Error: can not export $FQDN config" exit 2 fi echo "export $FQDN config" ssh -n -o StrictHostKeyChecking=no -i "$SSH_KEY_PATH" "${USERNAME}@${FQDN}" "/export show-sensitive" > "config_${FQDN}.rsc" 2> /dev/null # entferne Datumszeile echo sed pwd sed -i -r '/^# [0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}\:[0-9]{2}\:[0-9]{2}\sby\sRouterOS\s[0-9\s\.]+/d' "config_${FQDN}.rsc" echo add pwd git add "config_${FQDN}.rsc" echo commit pwd git commit -m "update config_${FQDN}" --quiet done <<< "$DEVICES" GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -i $GIT_REPO_DEPLOY_KEY" git push # Restore the original IFS value IFS=$OLD_IFS # loop sleep "$INTERVAL" done # test mitvolume # ohne volume wg git clone # healtcheck mit letzue exit code # beschrieben wie keys abgelegt werden müssen # hadolint