#!/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