#!/bin/bash # setze Variable # Format , DEVICES="rb5009.grote.lan,/home/mg/oxidized-selfmade/neu hex.grote.lan,/ssh/keys/hex" GIT_REPO_PATH=/home/mg/oxidized-selfmade # wo soll das Repo angelegt werden GIT_REPO_BRANCH=master GIT_USERNAME=oxidized-selfmade GIT_USER_MAIL=michael.grote@posteo.de GIT_REPO_REMOTE_NAME=origin INTERVAL=3600 # in Sekunden FAILFILE=$(mktemp) while true ; do # Healthcheck echo "" > "$FAILFILE" # Checks if [ -z "$GIT_REPO_PATH" ] ; then echo "GIT_REPO_PATH is not set." exit 3 fi 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 git config --global user.email "$GIT_USER_MAIL" git config --global user.name "$GIT_USERNAME" if [ -d "$GIT_REPO_PATH" ] ; then cd "$GIT_REPO_PATH" if [ -d ".git" ] ; then git pull "$GIT_REPO_REMOTE_NAME" "$GIT_REPO_BRANCH" --quiet else echo "Error: The directory exists but is not a Git repository" exit 1 fi else git clone "$GIT_REPO_URL" "$GIT_REPO_PATH" --quiet 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 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 -i "$SSH_KEY_PATH" "$FQDN" "/export show-sensitive" > "config_${FQDN}.rsc" # 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" git commit -m "update config_${FQDN}" --quiet done <<< "$DEVICES" 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