diff --git a/Dockerfile b/Dockerfile index f5d7b65..d5232d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,15 @@ FROM cgr.dev/chainguard/wolfi-base -RUN apk add --no-cache tini +RUN apk add --no-cache tini bash # nobody 65534:65534 USER 65534:65534 -COPY magellan / +COPY magellan /magellan +COPY bin/magellan.sh /usr/bin/magellan.sh -CMD [ "/magellan" ] + +CMD [ "/magellan.sh" ] ENTRYPOINT [ "/sbin/tini", "--" ] diff --git a/bin/magellan.sh b/bin/magellan.sh old mode 100644 new mode 100755 index 676c62d..4c34a82 --- a/bin/magellan.sh +++ b/bin/magellan.sh @@ -1,21 +1,104 @@ +#!/bin/bash + +EXE=./magellan +SUBNETS="" +PORTS="" +USER="" +PASS="" +SMD_HOST="" +SMD_PORT="" +THREADS="-1" +TIMEOUT="30" +ARGS="" + function build(){ go mod tidy && go build -C bin/magellan } function scan() { - ./magellan scan --subnet 172.16.0.0 --port 443 + # ./magellan scan --subnet 172.16.0.0 --port 443 + ${EXE} scan --subnet ${SUBNETS} --port ${PORTS} --timeout ${TIMEOUT} --threads ${THREADS} } -function list() { - ./magellan list -} - -function update() { - ./magellan update --user admin --pass password --host 172.16.0.109 --component BMC --protocol HTTP --firmware-path "" +function list(){ + # ./magellan list + ${EXE} list } function collect() { - ./magellan collect --user admin --pass password + # ./magellan collect --user admin --pass password + ${EXE} collect --user ${USER} --pass ${PASS} --timeout ${TIMEOUT} --threads ${THREADS} --host ${SMD_HOST} --port ${SMD_PORT} } + +# parse incoming arguments to set variables +while [[ $# -gt 0 ]]; do + case $1 in + --subnet) + SUBNETS="$2" + shift # past argument + shift # past value + ;; + -p|--port) + PORTS="$2" + shift # past argument + shift # past value + ;; + --user) + USER="$2" + shift # past argument + shift # past value + ;; + --pass|--password) + PASS="$2" + shift + shift + ;; + --smd-host) + SMD_HOST="$2" + shift + shift + ;; + --smd-port) + SMD_PORT="$2" + shift + shift + ;; + --timeout) + TIMEOUT="$2" + shift + shift + ;; + --threads) + THREADS="$2" + shift + shift + ;; + -*|--*) + echo "Unknown option $1" + exit 1 + ;; + *) + ARGS+=("$1") # save positional arg + shift # past argument + ;; + esac +done + +set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters + +echo "SMD host = ${SMD_HOST}" +echo "SMD port = ${SMD_PORT}" +echo "subnets = ${SUBNETS}" +echo "ports = ${PORTS}" +echo "user = ${USER}" +echo "pass = ..." + +if [[ -n $1 ]]; then + echo "Last line of file specified as non-opt/last argument:" + tail -1 "$1" +fi + +scan +collect \ No newline at end of file