====== AIX tape device-ok átnevezése beszédesre konfig állomány alapján ======
A szkript a .cfg fájl alapján végigmegy a tape device-okon (rmt és smc), és legenerálja az AIX-es parancsokat azok átnevezésére, a .cfg-ben deklarált paraméterek alapján.
# :: aix_rendev.sh konfig fajl ::
# A NUM oszlopba, changer definicio eseten "LIB"-et kell irni!
# A PREFIX hossza + NUM hossza <= 11 karakter
# Kommentelni #-tel lehet
# Az oszlopok tartalma:
# PREFIX NUM SERIAL WWPN
#TS3500 BITEP
3584P LIB 0000078A0114 500507630F853001
3584P _01A 0000078D22E6 500507630F453001
3584P _01B 0000078D22E6 500507630F853001
3584P _02A 0000078D22F6 500507630F453002
3584P _02B 0000078D22F6 500507630F853002
3584P _03A 0000078D235B 500507630F453003
3584P _03B 0000078D235B 500507630F853003
3584P _04A 0000078D2393 500507630F453004
3584P _04B 0000078D2393 500507630F853004
#!/bin/bash
# rmt/smc eszkoz atnevezo szkript v1.1 (20161214)
# Az atnevezeshez hasznalt konfig fajl-t a NAMING_CONF_FILE valtozoban kell beallitani
# A konfig fajlt szerkezeti kriteriumai:
# - A NUM oszlopba, changer definicio eseten "LIB"-et kell irni!
# - A PREFIX hossza + NUM hossza + 4 <= 15 karakter
# - Kommentelni #-tel lehet
# - Az oszlopok tartalma (peldaval):
# PREFIX NUM SERIAL WWPN
# JAG4 _01 12344567 1111222233334444
#############################################################################################
TAPE_DEV_FILE=/home/tsm/scripts/tape_rendev/aix_rendev.tapes.lst
TMP_FILE=/home/tsm/scripts/tape_rendev/aix_rendev.tmp
NAMING_CONF_FILE=/home/tsm/scripts/tape_rendev/aix_rendev.cfg
MACRO_TEMPL_FILE=/home/tsm/scripts/tape_rendev/aix_rendev.mac
rm -f $TMP_FILE
rm -f $MACRO_TEMPL_FILE
printf "# A $NAMING_CONF_FILE konfig fajlbol fogok dolgozni. Ellenorzom van-e benne redundans, vagy tul hosszu eszkoz specifikacio..."
while read LINE2; do
NEW_PRE=$(echo $LINE2 | awk '{print $1}')
NEW_NUM=$(echo $LINE2 | awk '{print $2}')
NEW_SER=$(echo $LINE2 | awk '{print $3}')
NEW_WWN=$(echo $LINE2 | awk '{print $4}')
if [[ $(grep -i "$NEW_PRE" $NAMING_CONF_FILE | grep -i -c "$NEW_NUM") -gt 1 ]]; then
echo "Redundans eszkoz specifikacio (Prefix: $NEW_PRE, Nr.: $NEW_NUM)!" >> $TMP_FILE
fi
if [[ $(grep -i "$NEW_SER" $NAMING_CONF_FILE | grep -i -c "$NEW_WWN") -gt 1 ]]; then
echo "Redundans eszkoz specifikacio (SN: $NEW_SER, WWN: $NEW_WWN)!" >> $TMP_FILE
fi
if [[ $((4 + ${#NEW_PRE} + ${#NEW_NUM})) -gt 15 && "$NEW_NUM" != "LIB" ]]; then
echo "Tul hosszu eszkoznev definicio ([rmt/smc]_${NEW_PRE}${NEW_NUM})!" >> $TMP_FILE
fi
done <<< "`egrep -v '(^#|^$)' $NAMING_CONF_FILE`"
awk '/^[^#$]/{$3=toupper($3);$4=toupper($4)}1' $NAMING_CONF_FILE > $NAMING_CONF_FILE.tmp
mv $NAMING_CONF_FILE.tmp $NAMING_CONF_FILE
echo " kesz."
sort $TMP_FILE | uniq
if [[ -e $TMP_FILE && ! "$1" = "-f" ]]; then
echo "Ha ennek ellenere futtatni szeretned ezzel a konfiggal a szkriptet, hasznald a -f kapcsolot."
exit 1
fi
echo
echo "# Az alabbi PREFIX-eken fogok vegigmenni: $(egrep -v '(^$|^#)' $NAMING_CONF_FILE | awk '{print $1}' | sort | uniq | tr '\n' ';' | sed 's/;/; /g')"
printf "Ha valamelyiket most biztosan nem szeretned vizsgalni, azt ird ide, vagy sorold fel '|' karakterrel elvalasztva: "
read EXCLUDE
echo
echo "# Legyujtom az rmt es smc eszkozoket a $TAPE_DEV_FILE fajlba..."
if [[ $(lsdev -Cc tape | wc -l) -eq 0 ]]; then
echo "Nem egyetlen rmt/smc eszkoz sem. Futtassak egy cfgmgr-t? [i/n]"
read CFGMGR
if [[ $CFGMGR='i' || $CFGMGR='I' ]]; then
cfgmgr
echo "Kesz."
fi
fi
DEV_LIST_CHANGED=0
for i in `lsdev -Cc tape | awk '{print $1}'`; do
if [[ $(grep -c $i $TAPE_DEV_FILE) -eq 0 ]]; then
DEV_LIST_CHANGED=1
rm -f $TAPE_DEV_FILE
break
fi
done
if [[ ! -e $TAPE_DEV_FILE || $DEV_LIST_CHANGED -eq 1 ]]; then
m=$(lsdev -Cc tape | wc -l)
j=0
for i in `lsdev -Cc tape | awk '{print $1}'`; do
j=$((j+1))
printf "$i $(lsattr -El $i | grep ww_name | awk '{print toupper($2)}' | sed 's/^0[Xx]//') " >> $TAPE_DEV_FILE
lscfg -vl $i | grep Serial | awk '{print toupper(substr($2,22,12))}' >> $TAPE_DEV_FILE
printf "\r"$(echo "scale=2;$j/$m*100" | bc | sed 's/\..*$//')"\x25"
done
echo " kesz."
else
echo "A $TAPE_DEV_FILE mar letezik, nem kerdezem le ujra. Ha megis ezt szeretned, torold kezzel, es futtass ujra!"
fi
# rmt device-ok atnevezese
echo
echo "# Atnevezem azon rmt eszkozoket, amik szerepelnek a konfig fajlban..."
egrep -v "(^#|^$|${EXCLUDE=^#})" $NAMING_CONF_FILE | while read LINE2; do
NEW_PRE=$(echo $LINE2 | awk '{print $1}')
NEW_NUM=$(echo $LINE2 | awk '{print $2}')
NEW_SER=$(echo $LINE2 | awk '{print $3}')
NEW_WWN=$(echo $LINE2 | awk '{print $4}')
cat $TAPE_DEV_FILE | grep rmt | while read LINE; do
ACT_DEV=$(echo $LINE | awk '{print $1}')
ACT_WWN=$(echo $LINE | awk '{print $2}')
ACT_SER=$(echo $LINE | awk '{print $3}')
NEW_NAME="rmt_${NEW_PRE}${NEW_NUM}"
if [ "$ACT_WWN" = "$NEW_WWN" ] && [ "$ACT_SER" = "$NEW_SER" ]; then
echo "rendev -l $ACT_DEV -n ${NEW_NAME}"
echo "update path ${NEW_PRE}${NEW_NUM} srct=serv destt=dr libr= device=/dev/${NEW_NAME}" >> $MACRO_TEMPL_FILE
fi
done
done
# smc device-ok atnevezese
echo
echo "# Atnevezem azon smc eszkozoket, amik szerepelnek a konfig fajlban..."
egrep -v "(^#|^$|${EXCLUDE=^#})" $NAMING_CONF_FILE | while read LINE2; do
NEW_PRE=$(echo $LINE2 | awk '{print $1}')
NEW_NUM=$(echo $LINE2 | awk '{print $2}')
NEW_SER=$(echo $LINE2 | awk '{print $3}')
NEW_WWN=$(echo $LINE2 | awk '{print $4}')
cat $TAPE_DEV_FILE | grep smc | while read LINE; do
ACT_DEV=$(echo $LINE | awk '{print $1}')
ACT_WWN=$(echo $LINE | awk '{print $2}')
ACT_SER=$(echo $LINE | awk '{print $3}')
NEW_NAME="smc_${NEW_PRE}"
if [ "$ACT_WWN" = "$NEW_WWN" ] && [ "$ACT_SER" = "$NEW_SER" ]; then
echo "rendev -l $ACT_DEV -n ${NEW_NAME}"
echo "update path srct=serv destt=libr device=/dev/${NEW_NAME}" >> $MACRO_TEMPL_FILE
fi
done
done