#!/bin/bash while true ; do echo "check variables..." 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 repository..." GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -i $GIT_REPO_DEPLOY_KEY" git clone "$GIT_REPO_URL" "$GIT_REPO_PATH" --quiet &> /dev/null 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 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" git add "config_${FQDN}.rsc" echo "commit config for ${FQDN} ..." git commit -m "update config_${FQDN}" --quiet done <<< "$DEVICES" echo "push config(s)..." GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -i $GIT_REPO_DEPLOY_KEY" git push &> /dev/null # Restore the original IFS value IFS=$OLD_IFS # loop echo "sleep..." sleep "$INTERVAL" done # test mitvolume # ohne volume wg git clone # healtcheck mit letzue exit code # beschrieben wie keys abgelegt werden müssen # hadolint