Skip to content

Instantly share code, notes, and snippets.

@weldpua2008
Created January 15, 2017 09:32
Show Gist options
  • Select an option

  • Save weldpua2008/fcbce72daaec555c64dd30d0334e5f30 to your computer and use it in GitHub Desktop.

Select an option

Save weldpua2008/fcbce72daaec555c64dd30d0334e5f30 to your computer and use it in GitHub Desktop.
Manage a host through iDRAC or mount iso on it
#!/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