Files
routeros-suricata-tzsp/scripts/upload-routeros-image.sh
T
2026-08-14 11:33:01 +02:00

64 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
set -eu
cd "$(dirname "$0")/.."
CONFIG_FILE="${DEPLOY_CONFIG:-deploy-routeros.env}"
if [ -f "$CONFIG_FILE" ]; then
# shellcheck disable=SC1090
case "$CONFIG_FILE" in
/*) . "$CONFIG_FILE" ;;
*) . "./$CONFIG_FILE" ;;
esac
fi
: "${ROUTER_HOST:=192.168.88.1}"
: "${ROUTER_USER:=admin}"
: "${ROUTER_PORT:=22}"
: "${ROUTER_IDENTITY_FILE:=}"
: "${ROUTER_SCP_DIR:=/}"
: "${REMOTE_IMAGE_NAME:=}"
IMAGE_PATH="${1:-}"
if [ -z "$IMAGE_PATH" ]; then
echo "Usage: $0 /path/to/ready-image.tar" >&2
echo "This script only uploads the TAR. It never builds or deploys it." >&2
exit 2
fi
[ -f "$IMAGE_PATH" ] || { echo "Ready image TAR not found: $IMAGE_PATH" >&2; exit 2; }
case "$IMAGE_PATH" in
*.tar) ;;
*) echo "Expected a .tar image archive: $IMAGE_PATH" >&2; exit 2 ;;
esac
command -v scp >/dev/null 2>&1 || { echo "scp is required" >&2; exit 2; }
command -v ssh >/dev/null 2>&1 || { echo "ssh is required" >&2; exit 2; }
if [ -z "$REMOTE_IMAGE_NAME" ]; then
REMOTE_IMAGE_NAME="$(basename "$IMAGE_PATH")"
fi
case "$REMOTE_IMAGE_NAME" in
*'/'*|*'\\'*|*'"'*|*';'*|*'$'*|*'`'*)
echo "REMOTE_IMAGE_NAME contains unsupported characters" >&2
exit 3
;;
esac
SSH_TARGET="${ROUTER_USER}@${ROUTER_HOST}"
REMOTE_PATH="${ROUTER_SCP_DIR%/}/${REMOTE_IMAGE_NAME}"
[ "$ROUTER_SCP_DIR" = "/" ] && REMOTE_PATH="/${REMOTE_IMAGE_NAME}"
REMOTE_ROS_NAME="${REMOTE_PATH#/}"
printf '[upload] %s -> %s:%s\n' "$IMAGE_PATH" "$SSH_TARGET" "$REMOTE_PATH"
if [ -n "$ROUTER_IDENTITY_FILE" ]; then
scp -i "$ROUTER_IDENTITY_FILE" -P "$ROUTER_PORT" "$IMAGE_PATH" "${SSH_TARGET}:$REMOTE_PATH"
ssh -i "$ROUTER_IDENTITY_FILE" -p "$ROUTER_PORT" "$SSH_TARGET" "/file/print without-paging where name=\"${REMOTE_ROS_NAME}\"" || true
else
scp -P "$ROUTER_PORT" "$IMAGE_PATH" "${SSH_TARGET}:$REMOTE_PATH"
ssh -p "$ROUTER_PORT" "$SSH_TARGET" "/file/print without-paging where name=\"${REMOTE_ROS_NAME}\"" || true
fi
echo "[upload] done"
echo "RouterOS file: ${REMOTE_ROS_NAME}"
echo "Nothing was built, imported, deployed or started."