routeros-config-export/app.sh

92 lines
2.4 KiB
Bash
Raw Normal View History

2023-07-21 20:40:39 +02:00
#!/bin/bash
2023-07-21 21:36:27 +02:00
GIT_REPO_PATH=$(mktemp -d)
git config --global user.email "$GIT_USER_MAIL"
git config --global user.name "$GIT_USERNAME"
echo "clone repository..."
2023-07-21 21:44:08 +02:00
GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -i $GIT_REPO_DEPLOY_KEY" git clone "$GIT_REPO_URL" "$GIT_REPO_PATH" --quiet > /dev/null
2023-07-21 21:36:27 +02:00
cd "$GIT_REPO_PATH"
2023-07-21 20:40:39 +02:00
while true ; do
2023-07-21 21:36:27 +02:00
echo "pull repository..."
git pull --quiet &> /dev/null
2023-07-21 21:33:53 +02:00
echo "check variables..."
2023-07-21 20:40:39 +02:00
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
2023-07-21 20:51:06 +02:00
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
2023-07-21 20:40:39 +02:00
# Save the current value of IFS to restore later
OLD_IFS=$IFS
# Set the IFS to a comma to split the values
IFS=','
2023-07-21 20:58:50 +02:00
while read -r FQDN USERNAME SSH_KEY_PATH; do
2023-07-21 20:40:39 +02:00
# 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
2023-07-21 21:33:53 +02:00
echo "export $FQDN config..."
2023-07-21 21:32:02 +02:00
ssh -n -o StrictHostKeyChecking=no -i "$SSH_KEY_PATH" "${USERNAME}@${FQDN}" "/export show-sensitive" > "config_${FQDN}.rsc" 2> /dev/null
2023-07-21 20:40:39 +02:00
# 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"
2023-07-21 21:33:53 +02:00
echo "commit config for ${FQDN} ..."
2023-07-21 21:44:08 +02:00
git commit -m "update config_${FQDN}" --quiet > /dev/null
2023-07-21 20:40:39 +02:00
done <<< "$DEVICES"
2023-07-21 21:33:53 +02:00
echo "push config(s)..."
2023-07-21 21:44:08 +02:00
GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -i $GIT_REPO_DEPLOY_KEY" git push > /dev/null
2023-07-21 20:40:39 +02:00
# Restore the original IFS value
IFS=$OLD_IFS
# loop
2023-07-21 21:29:27 +02:00
echo "sleep..."
2023-07-21 20:40:39 +02:00
sleep "$INTERVAL"
done
# test mitvolume
# ohne volume wg git clone
# healtcheck mit letzue exit code
# beschrieben wie keys abgelegt werden müssen
# hadolint