Created
January 15, 2017 09:32
-
-
Save weldpua2008/fcbce72daaec555c64dd30d0334e5f30 to your computer and use it in GitHub Desktop.
Manage a host through iDRAC or mount iso on it
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| ############################################################## | |
| # Manage a host through iDRAC or mount iso on it | |
| # | |
| ############################################################## | |
| # author: Valeriy Solovyov <weldpua2008@gmail.com> | |
| # version 0.1 <30.11.2015> | |
| # - initial | |
| ############################################################## | |
| if [ "$(id -u)" != "0" ]; then | |
| echo "This script must be run as root" 1>&2 | |
| exit 1 | |
| fi | |
| STORE_PREFIX="/opt/dell/srvadmin/bin" | |
| ISO_DEPLOY_BIN="vm6deploy.sh" | |
| VMCLI_BIN="vmcli" | |
| iDRAC_VERSION="7" | |
| iDRAC_IP="" | |
| iDRAC_USER="" | |
| iDRAC_PASSWORD="" | |
| iDRAC_CMD="" | |
| RACADM_BIN="" | |
| SUDO="" | |
| ISO_PATH="" | |
| if [ "$(id -u)" != "0" ]; then | |
| SUDO=`which sudo 2> /dev/null` | |
| fi | |
| function usage() | |
| { | |
| echo "Script that helps manage a host through iDRAC or mount iso on it | |
| usage: $0 | |
| -v - iDRAC version (default: ${iDRAC_VERSION}) | |
| -r - iDRAC IP address | |
| -u - iDRAC username | |
| -p - iDRAC password | |
| -c - racadm commands | |
| -i - path to iso that will deploy on this host. For example: | |
| http://localhost/iso.iso | |
| /home/iso.iso | |
| -h - call this help (exit status 1) | |
| " | |
| } | |
| (( $# == 0 )) && usage && exit 127 | |
| ################## getting command line args ###################################### | |
| while getopts "v:r:u:p:c:i:" o; do | |
| case "${o}" in | |
| v)iDRAC_VERSION=${OPTARG};; | |
| r)iDRAC_IP=${OPTARG};; | |
| u)iDRAC_USER=${OPTARG};; | |
| p)iDRAC_PASSWORD=${OPTARG};; | |
| c)iDRAC_CMD=${OPTARG};; | |
| i)ISO_PATH=${OPTARG};; | |
| (*) usage; exit 1;; | |
| esac | |
| done | |
| install_racadm(){ | |
| local iDRAC_VERSION_LOCAL=${1} | |
| ${SUDO} echo 'deb http://linux.dell.com/repo/community/ubuntu precise openmanage' > /etc/apt/sources.list.d/linux.dell.com.sources.list | |
| ${SUDO} gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-key 1285491434D8786F | |
| ${SUDO} gpg -a --export 1285491434D8786F | sudo apt-key add - | |
| ${SUDO} apt-get update | |
| ${SUDO} apt-get install srvadmin-all ipmitool wget -y | |
| } | |
| switch_version(){ | |
| if [ "${iDRAC_VERSION}" = "7" ];then | |
| RACADM_BIN="${STORE_PREFIX}/idracadm7" | |
| else | |
| echo "you use unsupported version of iDrac" | |
| exit 126 | |
| fi | |
| } | |
| prepare_iso(){ | |
| if [[ "$ISO_PATH" =~ ^http.* ]]; then | |
| if [ -f /root/tmp/iso.iso ];then | |
| ${SUDO} rm -rf /root/tmp/iso.iso | |
| fi | |
| ${SUDO} mkdir -p /root/tmp/ | |
| ${SUDO} wget $ISO_PATH -O /root/tmp/iso.iso | |
| ISO_PATH="/root/tmp/iso.iso" | |
| fi | |
| } | |
| prepare_iso_mount_commands(){ | |
| if [ ! -f "/usr/bin/${VMCLI_BIN}}" ];then | |
| ${SUDO} ln -sf "${STORE_PREFIX}/${VMCLI_BIN}" /usr/bin/${VMCLI_BIN} | |
| fi | |
| } | |
| kill_previous_versions(){ | |
| pkill -f "${VMCLI_BIN}" &> /dev/null|| ps -ef | grep "${VMCLI_BIN}}" | grep -v grep | awk '{print $2}' | xargs kill | |
| sleep 1 | |
| } | |
| run_cmd(){ | |
| if [ "x${ISO_PATH}" != "x" ];then | |
| prepare_iso | |
| prepare_iso_mount_commands | |
| kill_previous_versions | |
| ${SUDO} ${STORE_PREFIX}/${ISO_DEPLOY_BIN} -r "${iDRAC_IP}" -u "${iDRAC_USER}" -p "${iDRAC_PASSWORD}" -c "${ISO_PATH}" | |
| echo "==================================" | |
| echo "" | |
| echo "" | |
| echo "You need to kill ${VMCLI_BIN} after install" | |
| echo "==================================" | |
| elif [ "x${iDRAC_CMD}" != "x" ];then | |
| # echo "${SUDO} ${RACADM_BIN} -r "${iDRAC_IP}" -u "${iDRAC_USER}" -p "${iDRAC_PASSWORD}" ${iDRAC_CMD}" | |
| ${SUDO} ${RACADM_BIN} -r "${iDRAC_IP}" -u "${iDRAC_USER}" -p "${iDRAC_PASSWORD}" ${iDRAC_CMD} | |
| else | |
| usage | |
| exit 2 | |
| fi | |
| } | |
| ################### main flow ################# | |
| switch_version | |
| if [ ! -e "${RACADM_BIN}" ];then | |
| echo "install_racadm ${iDRAC_VERSION}" | |
| echo "${RACADM_BIN}" | |
| install_racadm "${iDRAC_VERSION}" | |
| fi | |
| run_cmd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment