#!/bin/bash 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" || exit while true ; do echo "pull repository..." git pull --quiet &> /dev/null 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 # 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 # check if target is reachable if ping -c1 -W1 "${FQDN}" > /dev/null; then 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 > /dev/null else echo "${FQDN} not reachable!" fi 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