===== TSM kliens log gyűjtő ===== Ez a szkript azoknak a TSM üzemeltetőknek lehet hasznos, akik ő maguk nem rendelkeznek hozzáféréssel a kliens hosztokra (node-okra). Az kliens hoszt üzemeltetője sok esetben nem rendelkezik kellő TSM-es ismerettel ahhoz, hogy egy esetleges TSM-es kliens oldali problémát kivizsgáljon. (Nem tudja milyen logokat, hol kell nézni, mit kell nézni bennük, stb.) Ilyen környezetben elég egy ehhez hasonló szkriptet elhelyezni egy publikus share-en, és csak megkérni az üzemeltetőt, hogy ezt futtassa le, s ez majd szépen összegyűjt nekünk mindenféle hasznos kliens oldali TSM-mel kapcsolatos információt és elküldi nekünk emailben. Ez a szkript az általunk megadott log, konfig fájlokat, 'dsmc q systeminfo' kimenetet, futó dsm-es processzek listáját küldi el, adott email cím(ek)re. Ha a terminál engedi, szép színes-szagos. Természetesen bármilyen egy számunkra hasznos adat begyűjtésével ki lehet egészíteni (tape device-ok listája, erőforrások kihasználtsága, stb.) Állítható paraméterek: * $LOGFAJLOK: gyűjtendő logok listája teljes útvonallal, szóközzel elválasztva * $CFGFAJLOK: gyűjtendő konfig fájlok listája teljes útvonallal, szóközzel elválasztva * $ADMINMAIL: az email címek vesszővel elválasztva, ahová a tömörített fájlt küldje * $HOSTNAME: A levél fejlécébe írt hosztnév A levél elküldéséhez [[http://en.wikipedia.org/wiki/Mailx|mailx]] parancsot használ, tehát értelemszerűen bekonfigurált mailx szükséges. Továbbá //tar//, //gzip//, //uuencode// programok. #!/bin/sh HOSTNAME=`hostname` ADMINMAIL="tsmadmin@szolgaltatom.hu" LOGFAJLOK="/var/adm/dsmsched.log /var/adm/dsmerror.log /var/adm/dsmwebcl.log /var/adm/tsm/dsmsched.log /var/adm/tsm/dsmerror.log /var/adm/tsm/dsmwebcl.log /var/adm/sysback.log" CFGFAJLOK="/usr/tivoli/tsm/client/api/bin64/dsm.sys /usr/tivoli/tsm/client/api/bin64/dsm.opt /usr/tivoli/tsm/client/ba/bin64/dsm.sys /usr/tivoli/tsm/client/ba/bin64/dsm.opt /opt/tivoli/tsm/client/ba/bin64/dsm.sys /opt/tivoli/tsm/client/ba/bin64/dsm.opt" VERSION="v1.3 (20130403)" RED='\033[0;31m' GREEN='\033[0;32m' LIGHT_GREEN='\033[1;32m' DEFAULT=$(tput sgr0) #'\033[0m' WHITE=$(tput bold;tput setaf 7) BEIGE=$(tput setaf 3) echo FAJLOK_="$LOGFAJLOK $CFGFAJLOK /tmp/dsminfo.txt" LOGMERET=`ls -la $LOGFAJLOK 2>/dev/null | awk '{ sum+=$5} END {print sum}'` if [[ `uname` = 'Linux' ]]; then e='-e'; else e=''; fi # Az echo parancs -e parametere csak Linux alatt ertelmezett echo $e "${WHITE}#################################################################################${DEFAULT}" echo $e "${WHITE}### TSM kliens log gyujto szkript ${VERSION} - keszitette: Agoston Peter ###${DEFAULT}" echo $e "${WHITE}#################################################################################${DEFAULT}" echo $e "- Futo TSM-es processzek:${BEIGE}" ps -ef | grep '[d]sm' DSMPROCESSZEK=`ps -ef | grep '[d]sm'` echo printf "${DEFAULT}- A 'mailx' ellenorzese a level kuldeshez... " if [[ `which mailx 2>/dev/null | wc -l | sed 's/[^0-9]//g'` -gt 0 ]]; then echo $e "${BEIGE}OK.$DEFAULT" else echo $e "${RED}Nincs!$DEFAULT" exit 1 fi echo $e "- Szabad terulet vizsgalata a /tmp/-ben..." #Ha a /tmp/-ben a logok osszmeretenek 10%-anyi hely van, az eleg kell, hogy legyen if [[ `df | grep '/tmp' | awk '{printf "%.0f",$3 * 512 }'` -lt $((LOGMERET / 10)) ]]; then echo $e "${RED}Nincs eleg hely a /tmp/-ben a .tar.gz letrehozasahoz.${DEFAULT}" echo $e "${WHITE}#################################################################################${DEFAULT}" exit 1 fi echo $e "- A 'dsmc q systeminfo' lekerdezese ide: ${BEIGE}/tmp/dsminfo.txt" dsmc q systeminfo DSMOPTFILE DSMSYSFILE ENV INCLEXCL OSINFO POLICY OPTIONS -filename=/tmp/dsminfo.txt | grep 'dsminfo.txt' if [[ $? -gt 0 ]]; then echo $e "${RED}Hat, ez nem futott le. Biztos be van konfiguralva a TSM kliens?${DEFAULT}" exit 1 fi echo $e "${DEFAULT}- TSM logok keresese..." for I in $( ls $FAJLOK_ 2>/dev/null ); do if [[ -e $I ]]; then FAJLOK="$FAJLOK $I" fi done echo $e "- Talalt TSM logok: ${BEIGE}${FAJLOK}${DEFAULT}" echo $e "- Tomoritem es kuldom tar.gz-ben a TSM adminoknak a logokat...${BEIGE}" if [[ `uname` = 'Linux' ]]; then v='-v'; else v='-e'; fi # Az rm parancs verbose parametere Linux alatt -v, AIX alatt -e if [[ `uname` = 'Linux' ]]; then P='P'; else P=''; fi # A tar parancs -P parametere csak Linux alatt ertelmezett tar cvf${P} - $FAJLOK | gzip -c9 > /tmp/${HOSTNAME}_tsm_logs.tar.gz && ( ( echo "$DSMPROCESSZEK"; uuencode /tmp/${HOSTNAME}_tsm_logs.tar.gz /tmp/${HOSTNAME}_tsm_logs.tar.gz ) | mailx -s "${HOSTNAME} TSM logs" ${ADMINMAIL} ) if [[ $? -eq 0 ]]; then echo $e "${DEFAULT}- Ideiglenes fajlok torlese..." rm $v /tmp/${HOSTNAME}_tsm_logs.tar.gz rm $v /tmp/dsminfo.txt echo $e "${DEFAULT}Latszolag minden sikerult."; else echo $e "${DEFAULT}Ugy tunik valami problema akadt. Kezi munkara lesz szukseg. Az alabbi ideiglenes fajlok sem kerultek torlesre:" echo $e "${BEIGE}/tmp/${HOSTNAME}_tsm_logs.tar.gz" echo $e "${BEIGE}/tmp/dsminfo.txt" fi echo $e "${DEFAULT}Ezt a levelet a $HOSTNAME-n futtatott /home/nfs/apr/scriptek/tsm_log_sender.sh kuldte." echo $e "${WHITE}#################################################################################${DEFAULT}" echo --- //[[ap@agostonpeter.com|Ágoston Péter]] 2013/04/11 10:35//