#!/bin/bash #####참고 : https://gist.github.com/kiler129/904fe463b008e740315c4abaf33c68af ### HANDLE VERSION PICK if [[ -z "$ILO_VERSION" ]]; then ILO_VERSION="4"; fi; case $ILO_VERSION in "2") ILO_JAR=html/intgapp_228.jar; ;; "3") ILO_JAR=html/intgapp3_231.jar; ;; "4") ILO_JAR=html/intgapp4_231.jar; ;; *) echo "iLO $ILO_VERSION is not supported" exit 1; esac echo "Connecting to iLO $ILO_VERSION (set ILO_VERSION to change)" ### HOST echo -n 'iLO Host' if [[ ! -z "$ILO_HOST" ]]; then if [[ -z "$ILO_SKIP_DEFAULTS" ]]; then echo -n " [$ILO_HOST]: " read ILO_NEW_HOST if [[ ! -z $ILO_NEW_HOST ]]; then ILO_HOST=$ILO_NEW_HOST; fi; else echo ": $ILO_HOST" fi; else echo -n ': ' read ILO_HOST fi; if [[ -z "$ILO_HOST" ]]; then echo "Empty host - aborted." exit 1 fi; ### LOGIN # While -i exists it's not portable echo -n 'iLO Login' if [[ ! -z "$ILO_LOGIN" ]]; then if [[ -z "$ILO_SKIP_DEFAULTS" ]]; then echo -n " [$ILO_LOGIN]: " read ILO_NEW_LOGIN; if [[ ! -z $ILO_NEW_LOGIN ]]; then ILO_LOGIN=$ILO_NEW_LOGIN; fi; else echo ": $ILO_LOGIN" fi; else echo -n ': ' read ILO_LOGIN fi; if [[ -z "$ILO_LOGIN" ]]; then echo "Empty login - aborted." exit 1 fi; ### PASSWORD echo -n 'iLO Password: ' read -s ILO_PASSWORD echo; ILO_ADDRESS="$ILO_HOST" if [[ ! "$ILO_ADDRESS" =~ ^"https://".* ]]; then ILO_ADDRESS="https://$ILO_ADDRESS"; fi; if [[ ! "$ILO_ADDRESS" =~ .*"/$" ]]; then ILO_ADDRESS="$ILO_ADDRESS/"; fi; ### AUTO-PROXY if [[ ! -z "$ILO_AUTOPROXY" ]]; then ILO_AUTOPROXY_HOST=$(echo $ILO_ADDRESS|cut -d/ -f3) if ! command -v mitmdump &> /dev/null; then echo "Cannot find mitmdump (part of mitmproxy package) - it is required for ILO_AUTOPROXY" exit 1 fi if ! command -v socat &> /dev/null; then echo "Cannot find socat - it is required for ILO_AUTOPROXY" exit 1 fi trap "kill 0" EXIT # See https://support.hpe.com/hpesc/public/docDisplay?docId=emr_na-a00045334en_us mitmdump --ssl-insecure -p 9443 --set tls_version_server_min=UNBOUNDED --mode reverse:$ILO_ADDRESS & socat TCP4-LISTEN:17988,fork,reuseaddr,bind=127.0.0.1 TCP4:$ILO_AUTOPROXY_HOST:17988 & socat TCP4-LISTEN:17990,fork,reuseaddr,bind=127.0.0.1 TCP4:$ILO_AUTOPROXY_HOST:17990 & sleep 2 # let mitmdump start ILO_ADDRESS="https://127.0.0.1:9443/" fi; ILO_SESSKEY=$( curl -fsS \ --insecure \ "${ILO_ADDRESS}json/login_session" \ --data "{\"method\":\"login\",\"user_login\":\"$ILO_LOGIN\",\"password\":\"$ILO_PASSWORD\"}" | sed 's/.*"session_key":"\([a-f0-9]\{32\}\)".*/\1/' ); if [[ -z "$ILO_SESSKEY" ]]; then echo "Failed to retrieve key. Wrong password or banned?" exit 1 fi; # normal mktemp will not work with higher Java security settings ILO_JNLP="$HOME/.iLO.jnlp" cat >"$ILO_JNLP" < Integrated Remote Console HPE eof echo "Starting iLO console..." if [[ ! -z "$ILO_AUTOPROXY" ]]; then echo "Console will appear soon. DO NOT close this window! (using autoproxy)" javaws -wait $ILO_JNLP; rm $ILO_JNLP else nohup sh -c "/usr/bin/env javaws -wait $ILO_JNLP; rm $ILO_JNLP" >/dev/null 2>&1 & echo "Console started. You CAN close this window." fi;