Pages

Power on multiple LPARs in one go (one HMC)

Power on multiple LPARs in one go one HMC (e.g., hmc1) and multiple LPAR names as arguments
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/ksh
#---------------------------------------------------------------
# Purpose : Power ON multiple LPARs on a single HMC if "Not Activated"
# Platform : AIX
# Author : adminCtrlX
#---------------------------------------------------------------
# Usage: ./poweron_lpar.ksh <lpar1> <lpar2> <lpar3> ...
# Example: ./poweron_lpar.ksh db01 app02 web03

if [ $# -lt 1 ]; then
echo "Usage: $0 <lpar1> <lpar2> <lpar3> ..."
exit 1
fi

LPAR_LIST="$@"
LPAR_FILE="/tmp/lpar_name"
LOG_FILE="/tmp/lpar_poweron.log"

# Clear files before use
> "$LPAR_FILE"
> "$LOG_FILE"

# HMC info
HMC="hmc1"
HMC_USER="hscroot"

echo "===== Searching for LPARs on HMC: $HMC ====="

ssh -o BatchMode=yes -o ConnectTimeout=10 ${HMC_USER}@${HMC} "
for m in \$(lssyscfg -r sys -F name); do
lssyscfg -r lpar -m \$m -F lpar_id:lpar_env:name:state | awk -v frame=\$m '{print frame \":\" \$0}'
done
" > "$LPAR_FILE"

echo ""
echo "===== Matching LPARs Found ====="

for LPAR in $LPAR_LIST; do
grep -i "$LPAR" "$LPAR_FILE"
done
echo ""
echo "===== Checking LPAR Status and Powering ON if Required ====="

# Loop through each requested LPAR
for LPAR in $LPAR_LIST; do
MATCH_LINE=$(grep -i "$LPAR" "$LPAR_FILE")
if [ -z "$MATCH_LINE" ]; then
echo "LPAR [$LPAR] not found on HMC [$HMC]" | tee -a "$LOG_FILE"
continue
fi

echo "$MATCH_LINE" | while IFS=: read FRAME LPAR_ID LPAR_ENV LPAR_NAME STATE; do
echo "Frame: $FRAME | LPAR: $LPAR_NAME | State: $STATE"

if [ "$STATE" = "Not Activated" ]; then
echo "→ Powering on LPAR [$LPAR_NAME] on frame [$FRAME] ..."
ssh -o BatchMode=yes -o ConnectTimeout=10 ${HMC_USER}@${HMC} "
chsysstate -m $FRAME -r lpar -o on -n $LPAR_NAME
" >> "$LOG_FILE" 2>&1
echo "LPAR [$LPAR_NAME] powered on successfully." | tee -a "$LOG_FILE"
else
echo "LPAR [$LPAR_NAME] is already active or in state [$STATE]" | tee -a "$LOG_FILE"
fi
done
done

echo ""
echo "===== Operation Complete ====="
echo "Logs saved to: $LOG_FILE"

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. Add the above script contents
# vi poweron_lpar.ksh
2. Make it executable
# chmod +x poweron_lpar.ksh
3. Run script
# ./poweron_lpar.ksh db01 app02 web03
or
# sh poweron_lpar.ksh db01 app02 web03

Script Output:

===== Searching for LPARs on HMC: hmc1 =====
===== Matching LPARs Found =====
P9-SERVER-01:5:AIXLINUX:db01:Not Activated
P9-SERVER-01:7:AIXLINUX:app02:Running
P9-SERVER-02:3:AIXLINUX:web03:Not Activated

===== Checking LPAR Status and Powering ON if Required =====
Frame: P9-SERVER-01 | LPAR: db01 | State: Not Activated
→ Powering on LPAR [db01] on frame [P9-SERVER-01] ...
LPAR [db01] powered on successfully.

Frame: P9-SERVER-01 | LPAR: app02 | State: Running
LPAR [app02] is already active or in state [Running]

Frame: P9-SERVER-02 | LPAR: web03 | State: Not Activated
→ Powering on LPAR [web03] on frame [P9-SERVER-02] ...
LPAR [web03] powered on successfully.

===== Operation Complete =====
Logs saved to: /tmp/lpar_poweron.log

No comments:

Post a Comment