meta data for this page
TSM napi riport shell szkript
Riportoló eszköz a TSM szerver állapotának ellenőrzésére, napi feladatok felderítésére. A szkript egyelőre Linux környezet alatt fut (AIX-osítás folyamatban). De természetesen nem kell azonos hoszton futnia a TSM szerverrel, elég ha van egy bekonfigurált, működő dsmadmc a hoszton, a megfelelő dsm.sys sztanzákkal (azokhoz a TSM szerverekhez, amiket riportolni szeretnénk). A szkript elején vannak a konfigurálható paraméterek. (changelog)
- tsm_napi_riport.sh
#!/bin/sh PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ################################################################ # # # TSM napi riport - tsm_napi_riport.sh v4.9 (2024.05.29.) # # Keszitette: Agoston Peter # # Web: http://agostonpeter.com/tsm-turi # # # ################################################################ SCRIPT_VER="v4.9 (2024.05.29.)" # Riport cimzett(ek) # Milyen email cim(ek)re menjen a riport MAILTO=$1 # TSM admin (néhány funkcióhoz magasabb jogosultság kell, pl: damaged objektumok listázása) TSM_FELH="tsmtech" TSM_JELSZO="123456" # Riportolando TSM szerver sztanzak TSM_SZERVEREK="tsmv5srv tsmv6srv" # Riportolando node replikalo TSM szerver sztanzak TSM_REPL_SZERVEREK="tsmv6srv" # HTML formatumu legy-e a level (0/1) HTML_EMAIL=1 # Csatolmanykent el legyen-e kuldve a HTML riport, ha egyebkent szoveges levelkent megy a riport (0/1) HTML_EMAIL_CSAT=1 # Munkafajl a futas idejere TMP_FILE='/tmp/tsm_napi_riport.tmp' TMP_HTML_FILE='/tmp/tsm_napi_riport.tmp.html' # Mappa, ahova a futasi eredmenyeket elmenti LOG_DIR='/opt/tsm_napi_riport/riportok' # Scratch riasztasi kuszob (=Max scratch - Used scratch) AVAILABLE_SCR_WARN=5 # X oranal regebben elo sessionok listazasa OLD_SESSION_ALERT=6 # Utoljara X napnal regebben bejelentkezett nodeok DEAD_NODE_AGE=8 # Reclamation hatarertek. Kilistazza azokat a storage poolokat, ahol olyan volumeok vannak, amiken ennel tobb a reclamalhato adat. %-os ertek RECLAIM_TH=50 # HADR peer statuszok lekerdezese. Kell, hogy legyen hozza SSH kulcs (lasd SSH_KEY_FILE parameter lejjebb). A szervereket is instance_user@hoszt formatumban kell megadni. HADR_SZERVEREK="root@hsmstore" # IBM TS3500/TS3310 library CLI utvonal (ennek a működéséhez java jre kell) TSLIBCLI_PATH="~/TS3500CLI.jar" # TS3500/TS3310 library login adatok, pl: user:jelszo@ip_vagy_dns_cim, ha tobb van, szokozzel elvalasztva, ha nincs, uresen hagyni TSLIBRARIES="userem:jelszava@librarym.akarmi" # OS szintu lekerdezesek beallitasai: # SSH privat kulcs teljes utvonallal az OS-es lekerdezesekhez. Egyetlen kulcsot lehet csak megadni, tehat kozos kulcs kell - azokhoz a user@hoszt parokhoz, amiket lejjebb az SSH_SZERVEREK-ben sorolunk majd fel. Ha ilyen nem akarunk, ures sztringet kell megadni SSH_KEY_FILE="/root/.ssh/id_rsa" # Hoszt nevek, amikre az OS lekerdezeseket futtatni kell. A szervereket is instance_user@hoszt formatumban kell megadni. SSH_SZERVEREK="root@tsmv5srv" # OS szintu lekerdezesek (0/1) OS_AIX_LSPS=1 # AIX paging space hasznalat OS_AIX_ERRPT=1 # AIX errpt kimenet OS_DF=1 # UNIX df kimenet OS_DDF=0 # UNIX HSM ddf kimenet # Konfig resz vege ######################################################################################################################### # Hasznalt SQL selectek TSM-hez SQL_LICENSZ_HASZNALATOK='select cast(FRONTEND_CAP/1024/1024 as decimal (8,2)) as "Front-End TB",substr(FRONTEND_CAP_DATE,1,19) as "Front-End Date",FRONTEND_CLIENT_COUNT as "Front-End client count",cast(TOTALSUROCC_TB as decimal (8,2)) as "SUR TB",substr(SUROCC_DATE,1,19) as "SUR occupancy date" from status' #SQL_LICENSZ_HASZNALATOK='select cast(FRONTEND_CAP/1024/1024 as decimal (8,2)) as "Front-End TB",substr(FRONTEND_CAP_DATE,1,19) as "Front-End Date",FRONTEND_CLIENT_COUNT as "Front-End client count",cast(TOTALSUROCC_TB as decimal (8,2)) as "SUR TB",cast(TOTALSURRETOCC_TB as decimal(8,2)) as "SUR retain TB",SUROCC_DATE as "SUR occupancy date" from status' SQL_UTOLSO24H_ADATMOZGASAI="select nn.domain_name,summary.activity, sum(cast(summary.bytes/1024/1024/1024 as decimal(6,2))) as GB from nodes as nn, summary where (end_time between current_timestamp - 24 hours and current_timestamp) and (activity='BACKUP' or activity='RESTORE' or activity='ARCHIVE' or activity='RETRIEVE') and ((nn.node_name=summary.entity)) group by domain_name,summary.activity order by activity,domain_name asc" SQL_UTOLSO24H_AKTIVITASAI="SELECT activity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as \"GB\" FROM summary WHERE end_time>current_timestamp-24 hours and activity<>'EXPIRATION' and bytes>0 GROUP BY activity" SQL_3X_MISSED="select substr(a.node_name,1,20) as \"NODE NAME\", substr(a.schedule_name,1,25) as SCHEDULE, substr(b.contact,1,20) as \"CONTACT\", substr(char(count(*)),1,4) as \"3 DAY COUNT\",(days(current_timestamp)-days(b.lastacc_time)) as \"LAST SEEN\" from EVENTS a, nodes b where (a.scheduled_start >=current_timestamp - 3 days) and a.node_name=b.node_name and a.status='Missed' and a.node_name is not NULL and a.schedule_name not like 'RMAN_%%_LOG%%' and a.schedule_name not like 'SQL_%%_LOG%%' group by a.node_name, a.schedule_name, b.contact, b.lastacc_time having count(*)>=3 order by \"3 DAY COUNT\" desc" SQL_QUERY_PROC_V6="SELECT process_num, substr(process,1,20) as PROCESS, substr(char(start_time),1,19) AS START_TIME,substr(char(day(current_timestamp - start_time)),1,2) AS \"(D)\" ,substr(char((current_timestamp - start_time)hours),1,2) AS \"(HH)\", substr(char((current_timestamp - start_time)minutes),1,2) AS \"(MM)\", cast(float(bytes_processed/1024/1024) AS DEC(12,2)) AS MB, cast((cast(bytes_processed as dec(18,0))/cast(timestampdiff(2,char(current_timestamp-start_time)) as decimal(18,0))) / 1024 / 1024 AS DEC (18,2)) AS \"MB/s\" FROM processes" SQL_QUERY_PROC_V5="SELECT process_num, substr(process,1,20) as PROCESS, substr(char(start_time),1,19) AS START_TIME,substr(char(days(current_timestamp) - days(start_time)),1,2) AS \"(D)\" ,substr(char((current_timestamp - start_time)hours),1,2) AS \"(HH)\", substr(char((current_timestamp - start_time)minutes),1,2) AS \"(MM)\", cast(float(bytes_processed/1024/1024) AS DEC(12,2)) AS \"MB\", cast((cast(float(bytes_processed/1024/1024) AS DEC(12,2)) / INT((current_timestamp - start_time) SECONDS)) AS DEC(12,2)) AS \"MB/s\" from processes" SQL_QUERY_SESS_V6="SELECT SESSION_ID, CLIENT_NAME, substr(char(start_time),1,19) AS START_TIME,substr(char(day(current_timestamp - start_time)),1,2) AS \"(D)\" ,substr(char((current_timestamp - start_time)hours),1,2) AS \"(HH)\", substr(char((current_timestamp - start_time)minutes),1,2) AS \"(MM)\", STATE,WAIT_SECONDS, cast(float(bytes_sent) /1024/1024 AS DEC(12,2)) AS \"Sent MB\", cast(float(bytes_received) /1024/1024 AS DEC(10,2)) AS \"Rec. MB\" FROM sessions WHERE SESSION_TYPE='Node' and (current_timestamp - start_time)hours>$OLD_SESSION_ALERT" # AND (BYTES_RECEIVED>1024*1024 OR BYTES_SENT>1024*1024)" SQL_QUERY_SESS_V5="SELECT SESSION_ID, CLIENT_NAME, substr(char(start_time),1,19) AS START_TIME,substr(char(days(current_timestamp) - days(start_time)),1,2) AS \"(D)\" ,substr(char((current_timestamp - start_time)hours),1,2) AS \"(HH)\", substr(char((current_timestamp - start_time)minutes),1,2) AS \"(MM)\", STATE,WAIT_SECONDS, cast(float(bytes_sent) /1024/1024 AS DEC(12,2)) AS \"Sent MB\", cast(float(bytes_received) /1024/1024 AS DEC(10,2)) AS \"Rec. MB\" FROM sessions WHERE SESSION_TYPE='Node' and int((current_timestamp - start_time)hours)>$OLD_SESSION_ALERT" # AND (BYTES_RECEIVED>1024*1024 OR BYTES_SENT>1024*1024)" SQL_Q_FAILED_EVENTS="select substr(node_name,1,17) as \"NODE NAME\", substr(schedule_name,1,23) as \"SCHEDULE NAME\", cast ( SUBSTR ( CHAR ( actual_start ) , 1 , 19 ) as char ( 19 ) ) AS \"ACTUAL START\", substr((completed-scheduled_start)minutes || ' min',1,7) as \"RUNTIME\" , case when result=0 then ' 0-Succesfull' when result=4 then ' 4-Skipped Files' when result=8 then ' 8-Warnings' when result=12 then '12-Errors' else cast(result as char(7)) end as \"RESULT\" from events where (current_timestamp - 24 hours)<scheduled_start and status='Failed' order by node_name" SQL_NDMP_MENTESEK="SELECT substr(substr(message,locate('/',message),locate(', ',message,locate('/',message)+1)-locate('/',message)),1,30) as VirtualFS, substr(first_record_time,1,16) as START_TIME, TRANSLATE('a bc:de:fg', DIGITS(last_record_time - first_record_time), '_______abcdefgh_____',' ') as Backup_time, substr(comp_message,locate('completion state of ',comp_message)+20,7) as Result FROM (\ SELECT pf.message, pc.comp_message, MIN(al.date_time) AS first_record_time, MAX(al.date_time) AS last_record_time FROM actlog al JOIN ( \ SELECT process, message FROM actlog WHERE (message LIKE '%Full%/%' or message LIKE '%Diff%/%') AND date_time >= CURRENT TIMESTAMP - 48 HOURS) pf ON al.process = pf.process \ JOIN ( \ SELECT process, message as comp_message FROM actlog WHERE (message LIKE '%bytes with a completion state%') AND date_time >= CURRENT TIMESTAMP - 48 HOURS) pc ON al.process = pc.process \ WHERE al.date_time >= CURRENT TIMESTAMP - 48 HOURS \ GROUP BY pf.message, pc.comp_message \ ) order by first_record_time" SQL_Q_SCRATCH="select library_name || ': ' ||substr(MEDIATYPE,1,10) as Media_type, count(*) as Scratch from libvolumes where status='Scratch' group by library_name, MEDIATYPE" SQL_Q_NOSCRATCH="select distinct library_name,'0' as \"SCRATCH\" from libvolumes where library_name not in (select distinct library_name from libvolumes where status='Scratch' group by library_name)" #SQL_DRIVE_USAGE="SELECT substr(library_name,1,20) as LIBRARY_NAME, decimal(SUM(float(hour(end_time - start_time)*60+minute(end_time - start_time)))/1440*100/count(DISTINCT substr(drive_name,1,posstr(drive_name,' '))),5,1) as \"24H LOAD (%)\" FROM summary WHERE activity='TAPE MOUNT' AND current_timestamp - 1 days < start_time GROUP BY library_name" SQL_NEM_HASZNALT_OPTIONSETEK="select OPTIONSET_NAME from CLOPTSETS where OPTIONSET_NAME not in (select OPTION_SET from nodes where OPTION_SET!='NULL')" SQL_KEVES_SCRATCH="select STGPOOL_NAME,MAXSCRATCH-NUMSCRATCHUSED as \"SCRATCH\" from stgpools where MAXSCRATCH-${AVAILABLE_SCR_WARN}<NUMSCRATCHUSED AND MAXSCRATCH>0" SQL_OFFLINE_PATHOK="select count(*) from paths where not online='YES'" SQL_OFFLINE_DRIVEOK="select count(*) from drives where not online='YES'" SQL_TEVES_PRIV_SZALAGOK="SELECT volume_name, library_name FROM libvolumes WHERE status='Private' AND last_use IS NULL AND volume_name NOT IN (SELECT volume_name FROM volumes) and (owner=(select server_name from status) or owner IS NULL)" SQL_PROBLEMAS_VOLUMEOK="select count(*) from volumes where (access!='READWRITE' AND access!='OFFSITE')" SQL_DEAD_NODES="select node_name, (days(current_timestamp)-days(lastacc_time)) as \"LAST ACCESS\" from nodes where locked='NO' and (days(current_timestamp)-days(lastacc_time))>$DEAD_NODE_AGE" SQL_REFUSED_NODES="SELECT substr(date_time,1,19) || ' ' || message as MSG from actlog WHERE msgno in (0421,0422,0424,0425,0426,0427,0428,0429,0430,0432,0435,0437) and date_time>current_timestamp-24 hours ORDER BY date_time ASC" SQL_RECLAIMABLE_VOL_NUM="select stgpool_name,count(*) as \"RECLAIMABLE_VOLS\", substr(access,1,10) as ACCESS from volumes where pct_reclaim>$RECLAIM_TH and status='FULL' group by stgpool_name,access order by stgpool_name" SQL_DEDUP_SAVINGS="select stgpool_name, cast((SPACE_SAVED_MB / 1024) as dec(10,2)) as \"SPACE_SAVED_GB\" from stgpools where SPACE_SAVED_MB>0" SQL_MISSING_COPYGROUP_DEST="select substr(DOMAIN_NAME,1,15) as \"DOMAIN NAME\",substr(SET_NAME,1,15) as \"SET NAME\",substr(CLASS_NAME,1,15) as \"CLASS NAME\",substr(COPYGROUP_NAME,1,15) as \"COPYGROUP_NAME\",substr(DESTINATION,1,15) as \"DESTINATION\" from bu_copygroups where DESTINATION not in (select stgpool_name from stgpools)" SQL_ACTLOG_ERRORS="SELECT substr(char(date_time),1,19) || ' ' || message as MSG from actlog WHERE severity in ('E','S') and msgno not in(2034,1930,1931,0944) and message not like 'ANE%' and date_time>current_timestamp-24 hours ORDER BY msg ASC" SQL_REORG_MESSAGES="SELECT substr(date_time,1,19) || ' ' || message as MSG from actlog WHERE msgno in(0293,0294,0317,0318,0336,0337) and date_time>current_timestamp-24 hours ORDER BY date_time ASC" SQL_HWERR_MESSAGES="SELECT substr(date_time,1,19) || ' ' || message as MSG from actlog WHERE msgno in(8943,8944,8359,8949,8311,8873,8471,8381,8300) and date_time>current_timestamp-24 hours ORDER BY date_time ASC" SQL_COMPARE_PRIMARY_COPY_POOLS="SELECT pooltype,CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(12,2)) as total_data_gb,((SELECT CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(18,2)) FROM stgpools WHERE pooltype='PRIMARY') - (SELECT CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(18,2)) FROM stgpools WHERE pooltype='COPY')) as pending_copy_gb FROM stgpools where pooltype!='ACTIVEDATA' GROUP BY pooltype" SQL_CLIENTO_MESSAGES="SELECT substr(date_time,1,19) || ' ' || message as MSG from actlog WHERE msgno in(2050,2053,2297) and date_time>current_timestamp-24 hours ORDER BY date_time ASC" # HTML kodok HTML_VONAL="<hr align=center width=\"70%\" noshade style=\"color: #D2D2D2\" size=\"1\">" HTML_MODUL_LABLEC="</pre></div>" HTML_TABLA_FEJLEC="<table style=\"word-break: break-all; word-wrap: break-word; min-width: 750px; max-width: 960px; border: 2px solid #D2D2D2;background-color:#F1F1F1; padding: 15px; font-size: 14px; font-family: courier;\"><tr><td>" HTML_TABLA_LABLEC="</td></tr></table>" # Fuggvenyek, egyeb valtozok SSH_OPT="-o BatchMode=yes -o ConnectTimeout=5 -i $SSH_KEY_FILE" export LANG=en_US read -r -d '' JS_CODE << EOF <head> <script language="JavaScript" type="text/javascript"> <!-- Copyright 2005, Sandeep Gangadharan --> <!-- For more free scripts go to http://www.sivamdesign.com/scripts/ --> <!-- if (document.getElementById) { document.writeln('<style type="text/css"><!--') document.writeln('.texter {display:block} @media print {.texter {display:block;}}') document.writeln('//--></style>') } function openClose(theID) { if (document.getElementById(theID).style.display == "block") { document.getElementById(theID).style.display = "none" } else { document.getElementById(theID).style.display = "block" } } function Collapse(ez) { if (ez.style.color == "gray") { ez.style.color = "#006DC7"; ez.innerHTML=ez.innerHTML.replace("[+]","[-]"); ez.innerHTML=ez.innerHTML.replace("gray","#006DC7")} else { ez.style.color = "gray"; ez.innerHTML=ez.innerHTML.replace("[-]","[+]"); ez.innerHTML=ez.innerHTML.replace("#006DC7","gray") } } // --> </script> </head> EOF function szerverver { I=0 for TSM_SZERVER in $TSM_SZERVEREK; do I=$((I+1)) if [ $1 = $TSM_SZERVER ]; then echo $TSM_SZERVER_VER | cut -d" " -f $I; fi done } function fejlec { FEJLEC=`echo $1 | tr '[:lower:]' '[:upper:]'` # KIMENET="/ $FEJLEC \\" # for I in `seq 1 $(((110-${#FEJLEC})/2))`; do # KIMENET="_$(echo $KIMENET)_" # done echo "_-_:: $FEJLEC ::_-_" >> $TMP_FILE RAND_ID=`date '+%s%N'` echo "<div onClick=\"openClose('${RAND_ID}');Collapse(this)\" style=\"cursor:hand; cursor:pointer; color: #006DC7;\">_-_:: [-] $FEJLEC ::_-_</div>\n<div id=\"${RAND_ID}\" class=\"texter\" style=\"display: block\"><pre style=\"white-space: pre-wrap; text-align: left\">" >> $TMP_HTML_FILE } control_c() # run if user hits control-c { echo -en "\n*** Ouch! Ertem a celzast, maris takaritok... ***\n" rm napi_ellenorzes.tmp 2>/dev/null rm $TMP_FILE 2>/dev/null rm $TMP_HTML_FILE 2>/dev/null rm /tmp/tsm_napi_riport_${DATUM}.html 2>/dev/null exit 1 } # trap keyboard interrupt (control-c) trap control_c SIGINT # Program torzs declare -A TSM_SZERVERNEVEK declare -A TSM_SZERVERNEV STARTTIME=`date "+%s"` >$TMP_FILE >$TMP_HTML_FILE echo "$HTML_TABLA_FEJLEC" >> $TMP_HTML_FILE echo '<div style="text-align: center; font-size: 48px; font-weight: bold;">' >> $TMP_HTML_FILE echo "TSM napi riport" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo '</div><div style="text-align: center;">' >> $TMP_HTML_FILE date | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "</div><br>" >> $TMP_HTML_FILE # Hasznalt sztanzak ellenorzese fejlec "Vizsgalando TSM sztanza konfigok mukodesenek ellenorzese" | tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do VER=$((`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER q opt | sed -n -e 's/Server Version \([0-9]\),.*/\1/p' -e 's/[\t\s]*//g'`)) LONG_VER=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER q opt | sed -n -e 's/Server Version \([0-9]\), Release \([0-9]\), Level \([0-9]\+\)\.\([0-9]\+\).*/\1.\2.\3.\4/p' | sed -e 's/^[^0-9]*//g') TSM_SZERVERNEV[$TSM_SZERVER]=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER q opt | sed -n -e 's/Session established with server \([^:]*\):.*/\1/p') if [ "$VER" != "0" ]; then OK="OK! (v${LONG_VER} - ${TSM_SZERVERNEV[$TSM_SZERVER]})" TSM_SZERVERNEVEK_TMP="$TSM_SZERVERNEVEK_TMP ${TSM_SZERVERNEV[$TSM_SZERVER]}" TSM_SZERVEREK_TMP="$TSM_SZERVEREK_TMP $TSM_SZERVER" TSM_SZERVER_VER="$TSM_SZERVER_VER $VER" else OK="Sikertelen! A szerver kihagyasra kerul a riportbol." fi echo "${TSM_SZERVER}: $OK" | awk -F'|' '{printf "> @%-35s %-12s\n",$1,$2}' | tee -a $TMP_HTML_FILE | tee -a $TMP_FILE done TSM_SZERVEREK=${TSM_SZERVEREK_TMP# } TSM_SZERVERNEVEK=${TSM_SZERVERNEVEK_TMP# } if [ `echo $TSM_SZERVEREK | grep -c '[a-zA-Z]'` -eq 0 ]; then echo "Nincs hasznalhato sztanza a konfigomban." exit 1 fi echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "adatbazis kihasznaltsag" datediff() { d1=$(date -d "$1" +%s) d2=$(date -d "$2" +%s) echo $(( (d1 - d2) / 86400 )) } for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi TOTAL=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -tabdel -displ=tabl q db f=d | head -n1 | awk '{ print $2 }' | sed 's/,//g'` WARN='<img align="middle" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAPFBMVEVTQj78AQE3gXz8AQH7AQH6AgL4AgLsBwbbDQz4AwL8AQH8AQH8AQH5AgLwBgXyBQX7AQH6AgL2AwP8AQHRQKRJAAAAE3RSTlMD+wHcxIdkIhFH8uHfeS8vypNRz5cftAAAAGpJREFUGNNlj1cOACEIRK1r7/e/64oZEhP5UHiBYRAUSnjn/P44qjVaG1u5/tI6kT7UcReSSCSiWqZ8DHpzU0JZymQIp8dufXMD44XTN9COwZwAGFm9L4xAtBSI0loArGVjEsYe689xz/k/H5UJk4XCt8UAAAAASUVORK5CYII=">'; case `szerverver $TSM_SZERVER` in 5) USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -tabdel -displ=tabl q db f=d | head -n1 | awk '{ print $1 }' | sed 's/,//g'`; LASTDBB=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=table -tabdel "q db f=d" | awk '{print $19" "$20}');; 6) USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -tabdel -displ=tabl q db f=d | head -n1 | awk '{ print $3 }' | sed 's/,//g'` LASTDBB=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=table -tabdel "q db f=d" | awk '{print $18" "$19}');; 7) USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -tabdel -displ=tabl q db f=d | head -n1 | awk '{ print $3 }' | sed 's/,//g'` #LASTDBB=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=table -tabdel "q db f=d" | awk '{print $19" "$20}');; LASTDBB=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=table -tabdel "select TO_CHAR(LAST_BACKUP_DATE,'MM/DD/YYYY HH24:MI:SS') from db");; 8) USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -tabdel -displ=tabl q db f=d | head -n1 | awk '{ print $3 }' | sed 's/,//g'` #LASTDBB=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=table -tabdel "q db f=d" | awk '{print $14" "$15}');; LASTDBB=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=table -tabdel "select TO_CHAR(LAST_BACKUP_DATE,'MM/DD/YYYY HH24:MI:SS') from db");; esac [[ $(datediff "$LASTDBB" "$(date '+%m/%d/%Y %H:%M:%S' )") -lt -1 ]] && WARNING=$WARN echo 'Kihasznaltsag: '`echo "scale=2; 100 * $USED / $TOTAL" | bc`"% (Utolso sikeres DB mentes : ${LASTDBB}) ${WARNING}" | tee -a $TMP_HTML_FILE | sed 's/<img .*>//' >> $TMP_FILE; done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Licensz hasznalat" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi echo ' Front-End GB Front-End Date Front-End client count | SUR TB SUR occupancy date' | tee -a $TMP_HTML_FILE >> $TMP_FILE echo '------------- -------------------- ----------------------- | ----------- --------------------' | tee -a $TMP_HTML_FILE >> $TMP_FILE dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -tabdel -displ=tabl "$SQL_LICENSZ_HASZNALATOK" | egrep -v '(ANR|ANS)' | awk -F' ' '{printf "%13s %-22s %21s | %11d %-20s\n", $1, $2, $3, $4, $5}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "archlog kihasznaltsag" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi case `szerverver $TSM_SZERVER` in 5) TOTAL=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log | awk '{ print $1 }' | sed 's/,//'` USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log | awk '{ print $9 }' | sed 's/,//'`; TOTAL=1 ;; 6) TOTAL=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log f=d | awk '{ print $6 }' | sed 's/,//'` USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log f=d | awk '{ print $7 }' | sed 's/,//'` ;; 7) TOTAL=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log f=d | awk '{ print $9 }' | sed 's/,//'` USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log f=d | awk '{ print $10 }' | sed 's/,//'` ;; 8) TOTAL=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log f=d | awk '{ print $9 }' | sed 's/,//'` USED=`dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y q log f=d | awk '{ print $10 }' | sed 's/,//'` ;; esac USED=`echo "scale=2; 100 * $USED / $TOTAL" | bc` [[ ${#USED} -lt 5 ]] && USED="0$USED" echo "Kihasznaltsag: ${USED}%" | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ if [ "$HADR_SZERVEREK" ]; then fejlec "HADR statusz(ok)" for HADR_SZERVER in $HADR_SZERVEREK; do STAT=`ssh $SSH_OPT ${HADR_SZERVER} ". /home/${HADR_SZERVER%%@*}/.profile; db2pd -hadr -db tsmdb1" | grep HADR_STATE | awk -F\= '{print $1" "$2}'` BUF=`ssh $SSH_OPT ${HADR_SZERVER} ". /home/${HADR_SZERVER%%@*}/.profile; db2pd -hadr -db tsmdb1" | grep STANDBY_RECV_BUF_PERCENT | awk -F\= '{print $2}'` echo "${HADR_SZERVER##*@} $STAT $BUF" | awk '{printf "> %-10s HADR statusz: %15s - %-10s (StandByRcvBufUsed: %-3s \%)\n",$1,$2,$3,$4}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE fi #_________________________________________________________________________________________________________________________________________________________________ fejlec "futo processzek" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi echo "PROCESS_NUM PROCESS START_TIME ELAPTIME MB MB/s" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "----------- -------------------- ------------------- ----------- ---------- ----------------" | tee -a $TMP_HTML_FILE >> $TMP_FILE case `szerverver $TSM_SZERVER` in 5) dsmadmc -pa=$TSM_JELSZO -id=$TSM_FELH -dataonly=y -se=${TSM_SZERVER} -commadel -displ=list "${SQL_QUERY_PROC_V5}" | egrep -v '(ANR|ANS)' | awk -F',' '{printf "%-11s %-20s %-19s %2dd %2dh %2dm %11s %17s\n", $1, $2, $3, $4, $5, $6, $7, $8 ,$9}' | tee -a $TMP_HTML_FILE >> $TMP_FILE;; [6-9]) dsmadmc -pa=$TSM_JELSZO -id=$TSM_FELH -dataonly=y -se=${TSM_SZERVER} -commadel -displ=list "${SQL_QUERY_PROC_V6}" | egrep -v '(ANR|ANS)' | awk -F',' '{printf "%-11s %-20s %-19s %2dd %2dh %2dm %11s %17s\n", $1, $2, $3, $4, $5, $6, $7, $8 ,$9}' | tee -a $TMP_HTML_FILE >> $TMP_FILE;; esac echo | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "mediawait-es szerver session-ok" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -pa=$TSM_JELSZO -id=$TSM_FELH -se=${TSM_SZERVER} -dataonly=y -displ=tabl "select server_name from servers" | egrep -v '(ANR|ANS)' | while read LF_CLIENT; do (dsmadmc -pa=$TSM_JELSZO -id=$TSM_FELH -se=${TSM_SZERVER} -dataonly=y -tabdel "$LF_CLIENT: q se" || echo "Kapcsolodasi hiba!") | sed "s/^/${LF_CLIENT}: /" | egrep '(hiba|MediaW)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "$OLD_SESSION_ALERT oranal regebb ota nyitott node session" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi echo "SESSION_ID CLIENT_NAME START_TIME ELAPTIME STATUS Sent MB Recieved MB" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "---------- -------------------- ------------------- ---------- ------------- ------------ ------------" | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ `szerverver $TSM_SZERVER` -eq 5 ]; then SQL_QUERY_SESS=$SQL_QUERY_SESS_V5; else SQL_QUERY_SESS=$SQL_QUERY_SESS_V6; fi dsmadmc -pa=$TSM_JELSZO -id=$TSM_FELH -dataonly=y -se=${TSM_SZERVER} -commadel -displ=list "${SQL_QUERY_SESS}" | egrep -v '(ANR|ANS)' | awk -F',' '{printf "%10s %-20s %19s %2dd %2dh %2dm %-6s (%3ss) %12s %12s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' | tee -a $TMP_HTML_FILE >> $TMP_FILE echo | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "scratch szalagok szama" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "${SQL_Q_NOSCRATCH}" | grep -v '^$' | egrep -v '(ANR|ANS)' | awk '{printf "%-15s %10s %3s\n",$1,$3,$2}' | tee -a $TMP_HTML_FILE>> $TMP_FILE dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "${SQL_Q_SCRATCH}" | grep -v '^$' | egrep -v '(ANR|ANS)' | awk '{printf "%-15s %10s %3s\n",$1,$3,$2}' | tee -a $TMP_HTML_FILE>> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ if [[ "$TSLIBRARIES" ]]; then fejlec "esetleges beavatkozast igenyelheto kezeletlen library esemenyek" for TSLIBRARY in $TSLIBRARIES; do TSLIB_FELH=${TSLIBRARY%%:*} TSLIB_JELSZO=${TSLIBRARY#*:} TSLIB_JELSZO=${TSLIB_JELSZO%@*} TSLIB_HOSZT=${TSLIBRARY##*@} echo "> @${TSLIB_HOSZT}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $(java -jar ${TSLIBCLI_PATH} --version | awk '{print $1}') = 'TS3310CLI' ]; then java -jar ${TSLIBCLI_PATH} -u ${TSLIB_FELH} -p ${TSLIB_JELSZO} -a ${TSLIB_HOSZT} --viewOperatorInterventions -t 30000 | awk -F',' '/UnOpened/{print $6" |"$2" | "$4}' | tee -a $TMP_HTML_FILE >> $TMP_FILE else java -jar ${TSLIBCLI_PATH} -u ${TSLIB_FELH} -p ${TSLIB_JELSZO} -a ${TSLIB_HOSZT} --setMaxSocketExceptionRetries 3 --viewErrorLog 30 | head -n10 | awk -F',' '{print $3" |"$4" |"$7" | "$1}' | tee -a $TMP_HTML_FILE >> $TMP_FILE fi done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE fi #_________________________________________________________________________________________________________________________________________________________________ if [[ "$TSLIBRARIES" ]]; then fejlec "cleaning szalagok allapota" for TSLIBRARY in $TSLIBRARIES; do TSLIB_FELH=${TSLIBRARY%%:*} TSLIB_JELSZO=${TSLIBRARY#*:} TSLIB_JELSZO=${TSLIB_JELSZO%@*} TSLIB_HOSZT=${TSLIBRARY##*@} echo "> @${TSLIB_HOSZT}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $(java -jar ${TSLIBCLI_PATH} --version | awk '{print $1}') = 'TS3310CLI' ]; then java -jar ${TSLIBCLI_PATH} -u ${TSLIB_FELH} -p ${TSLIB_JELSZO} -a ${TSLIB_HOSZT} --viewCleaningCartridges -t 30000 | sed '1d' | awk -F', ' '{sub(/ */,"",$1); sub(/ */,"",$NF); print $1" ("$NF" tisztitas maradt)"}' | tee -a $TMP_HTML_FILE >> $TMP_FILE else java -jar ${TSLIBCLI_PATH} -u ${TSLIB_FELH} -p ${TSLIB_JELSZO} -a ${TSLIB_HOSZT} --viewCleaningCartridges --setMaxSocketExceptionRetries 3 | awk -F', ' '/Slot/{sub(/ */,"",$1); sub(/ */,"",$6); print $1" ("$6" tisztitas maradt)"}' | tee -a $TMP_HTML_FILE >> $TMP_FILE fi done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE fi #_________________________________________________________________________________________________________________________________________________________________ if [[ "$TSLIBRARIES" ]]; then fejlec "ures slotok szama a library-ben" for TSLIBRARY in $TSLIBRARIES; do TSLIB_FELH=${TSLIBRARY%%:*} TSLIB_JELSZO=${TSLIBRARY#*:} TSLIB_JELSZO=${TSLIB_JELSZO%@*} TSLIB_HOSZT=${TSLIBRARY##*@} echo "> @${TSLIB_HOSZT}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $(java -jar ${TSLIBCLI_PATH} --version | awk '{print $1}') = 'TS3310CLI' ]; then java -jar ${TSLIBCLI_PATH} -u ${TSLIB_FELH} -p ${TSLIB_JELSZO} -a ${TSLIB_HOSZT} -viewSystemSummary | awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/Storage Slots/' | awk '{a[$1]=$2}END{print a["Empty:"]"/"a["Total:"]}' | tee -a $TMP_HTML_FILE >> $TMP_FILE else java -jar ${TSLIBCLI_PATH} -u ${TSLIB_FELH} -p ${TSLIB_JELSZO} -a ${TSLIB_HOSZT} -viewSystemSummary | awk '/empty/{print $5}' | tee -a $TMP_HTML_FILE >> $TMP_FILE fi done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE fi #_________________________________________________________________________________________________________________________________________________________________ fejlec "drive kihasznaltsag library-kben" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVER}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi FILLER="#" declare -A MATRIX QUERY_DATE=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER -dataonly=y -commadel "select date(current_timestamp) || ' 00:00:00.000000' from sysibm.sysdummy1") LIBRARIES=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER -dataonly=y -commadel "select distinct library_name from drives where online='YES'") for LIBRARY in $LIBRARIES; do SQL="select ORA, cast(round(sum(USAGE) / (select count(*) from drives where online='YES' and library_name='${LIBRARY}')) as dec(4,0)) from ( select concat(date(start_time) || ' ',substr(time(start_time),1,2)) as ORA, sum( cast(CASE WHEN substr(end_time,1,13)=substr(start_time,1,13) THEN timestampdiff(4,end_time-start_time) WHEN substr(end_time,1,13)>substr(start_time,1,13) THEN timestampdiff(4,timestamp(concat(date(start_time) || ' ', substr(time(start_time),1,2) || ':59:59.000000'))-start_time) END as dec(5,2))) /60*100 as USAGE from summary where ACTIVITY='TAPE MOUNT' and library_name='${LIBRARY}' and start_time<timestamp('$QUERY_DATE') and start_time>timestamp('$QUERY_DATE') - 1 days group by concat(date(start_time) || ' ',substr(time(start_time),1,2)) UNION ALL select concat(date(end_time) || ' ',substr(time(end_time),1,2)) as ORA, sum( cast(CASE WHEN substr(end_time,1,13)>substr(start_time,1,13) THEN timestampdiff(4,end_time-timestamp(concat(date(end_time) || ' ', substr(time(end_time),1,2) || ':00:00.000000'))) END as dec(5,2))) /60*100 as USAGE from summary where ACTIVITY='TAPE MOUNT' and library_name='${LIBRARY}' and end_time<timestamp('$QUERY_DATE') and end_time>timestamp('$QUERY_DATE') - 1 days group by concat(date(end_time) || ' ',substr(time(end_time),1,2)) ) group by ORA ORDER BY ORA" SQL2="select concat(date(start_time+1 hours) || ' ',substr(time(start_time+1 hours),1,2)) as ORA, cast(CASE WHEN substr(end_time,1,13)>substr(start_time+1 hours,1,13) THEN timestampdiff(8,timestamp(concat(date(end_time) || ' ',substr(time(end_time),1,2)) || ':00:00.000000')-timestamp(concat(date(start_time+1 hours) || ' ',substr(time(start_time+1 hours),1,2)) || ':00:00.000000')) END as dec(5,0)) *60 as USAGE from summary where ACTIVITY='TAPE MOUNT' and library_name='${LIBRARY}' and start_time>timestamp('$QUERY_DATE') - 1 days and start_time<timestamp('$QUERY_DATE') ORDER BY start_time" SQL_DRIVE_USAGE="SELECT decimal(SUM(float(hour(end_time - start_time)*60+minute(end_time - start_time)))/1440*100/count(DISTINCT substr(drive_name,1,posstr(drive_name,' '))),5,1) as \"24H LOAD (%)\" FROM summary WHERE activity='TAPE MOUNT' AND date(current_timestamp) - 1 days < start_time and end_time<date(current_timestamp) and library_name='${LIBRARY}' GROUP BY library_name" NUM_OF_DRIVES=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER -dataonly=y -commadel "select count(*) from drives where online='YES' and library_name='${LIBRARY}'") NR=0 rm -rf $TMP_FILE.drvusage $TMP_FILE.drvusage.2 # Matrix inicializalasa for J in {1..24}; do for I in {1..24}; do MATRIX[$I,$J]=" " done printf "%02d, 0\n" "$((10#$J-1))" >> $TMP_FILE.drvusage printf "%02d, 0\n" "$((10#$J-1))" >> $TMP_FILE.drvusage.2 done AKT_DATUM=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER -dataonly=y "select date(current_timestamp - 1 days) from sysibm.sysdummy1" | sed 's/ //g') # Lekerdezem az adott oranal regebben kezdodott es kesobb vegzodott hasznalatot # Az SQL a jelolt oratol kezdve annyi oran at tarto mountot ad vissza, ahanyszor az ertekben a 60 megvan. # Ennek alapjan adok hozza ertekeket az adott naphoz dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER -dataonly=y -commadel "${SQL2}" | grep "$AKT_DATUM" | sed 's/^[^ ]* //' | grep ',[0-9]*$' | while read SOR; do HOUR=$(echo $SOR | awk -F',' '{print $1}') VALUE=$(echo $SOR | awk -F',' '{print $2}') OLD_VALUE=$(grep "^$HOUR," ${TMP_FILE}.drvusage.2 | awk -F',' '{print $2}') while [[ "$VALUE" -gt 0 ]]; do USAGE=$(echo "scale=2; (1/${NUM_OF_DRIVES}*100) + $OLD_VALUE" | bc | sed 's/\..*$//') sed -i "s/^$HOUR,.*/$HOUR, $USAGE/" $TMP_FILE.drvusage.2 HOUR=$((10#$HOUR+1)) [[ $HOUR -lt 10 ]] && HOUR="0$HOUR" VALUE=$((10#$VALUE-60)) done done # Az ures orakkal valo kiegeszitese az adatfajlnak dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=$TSM_SZERVER -dataonly=y -commadel "$SQL" | sed 's/^[^ ]* //' | while read SOR; do HOUR=$(echo $SOR | awk -F',' '{print $1}') VALUE=$(echo $SOR | awk -F',' '{print $2}') sed -i "s/^$HOUR,.*/$HOUR, $VALUE/" $TMP_FILE.drvusage done # A diagram matrix feltoltese while read SOR; do NR=$((10#$NR+1)) HOUR=$(echo $SOR | awk -F',' '{print $1}') VALUE=$(echo $SOR | awk -F',' '{print $2}') COL=$(($NR*2)) MATRIX[1,$NR]=$HOUR for I in {2..11}; do # 10-re kerekites varazslas if [[ $(echo "scale=2; $VALUE/10" | bc | awk '{printf("%d\n",$1 + 0.5)}') -le $(((10#$I-2))) ]]; then # Az 50%-os segedmutato [[ $I -eq 7 || $I -eq 2 ]] && MATRIX[$I,$NR]="_" || MATRIX[$I,$NR]=" " else MATRIX[$I,$NR]="$FILLER" fi done MATRIX[$((10#$I+1)),$NR]="_" done <<< "`paste $TMP_FILE.drvusage $TMP_FILE.drvusage.2 | awk '{print $1, ($2 + $4)}'`" # Diagram matrix kiirasa a \ tengelyre tukrozve, majd - tengelyre tukrozve echo '<div style="margin: 10px 130px 10px 130px;"><pre style="padding:10px; background-color: #4B4B4B; color: white; border: 2px solid #D2D2D2;">' >> $TMP_HTML_FILE echo $AKT_DATUM | sed -e :a -e 's/^.\{1,'$((10#$NR*3))'\}$/ & /;ta' | tee -a $TMP_HTML_FILE >> $TMP_FILE for ((J=1;J<=NR;J++)) do for ((I=1;I<=NR;I++)) do if [[ ${MATRIX[$J,$I]} =~ [0-9] ]]; then printf "%3s" ${MATRIX[$J,$I]} else printf "%3s" ${MATRIX[$J,$I]}${MATRIX[$J,$I]} fi done [[ $J -eq 7 || $J -eq 2 || $J -eq 12 ]] && printf " _%3s\n" "$((($J-2)*10))%" || echo done | tac | tail -n 13 | tee -a $TMP_HTML_FILE >> $TMP_FILE TOTAL_DRV_USAGE=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=yes -commadel "$SQL_DRIVE_USAGE" | egrep -v '(ANR|ANS)') echo "${LIBRARY} (Teljes kihasznaltsag: ${TOTAL_DRV_USAGE}%)" | sed -e :a -e 's/^.\{1,'$((10#$NR*3))'\}$/ & /;ta' >> $TMP_FILE echo "<b>${LIBRARY} (Teljes kihasznaltsag: ${TOTAL_DRV_USAGE}%)</b>" | sed -e :a -e 's/^.\{1,'$((10#$NR*3))'\}$/ & /;ta' >> $TMP_HTML_FILE echo '</pre></div>' >> $TMP_HTML_FILE echo -e "\n\n" >> $TMP_FILE done # for LIBRARY in $LIBRARIES; do done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "kevesebb, mint $AVAILABLE_SCR_WARN hasznalhato scratch szalaggal rendelkezo storage poolok" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=yes "$SQL_KEVES_SCRATCH" | grep '[0-9]$' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "readonly, unavailable es destroyed volume-ok szama" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_PROBLEMAS_VOLUMEOK" | sed -n 's/[^0-9]*//gp' | sed 's/$/ db/' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "fals private szalagok ('private' statuszu, megis a 'Last use' datum erteke NULL)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_TEVES_PRIV_SZALAGOK" | grep -v '^AN[RS][0-9][0-9][0-9][0-9][SEWID]' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "offline driveok szama" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_OFFLINE_DRIVEOK" | sed -n 's/[^0-9]*//gp' | sed 's/$/ db/' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "offline pathok szama" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_OFFLINE_PATHOK" | sed -n 's/[^0-9]*//gp' | sed 's/$/ db/' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "elmult 24 ora NDMP mentesei" echo "VIRTUALFS START_TIME BACKUP_TIME" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "------------------------------- ----------------- ------------" | tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do echo "> @${TSM_SZERVER}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=tabl "$SQL_NDMP_MENTESEK" | egrep -v '(ANS|ANR)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "sikertelen admin utemezesek (utolso 24h)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} q ev \* t=a begint=-24:00 endd=today endt=now | grep Failed | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "sorozatosan (elmult 3 napban min. 3x) Missed statuszu utemezesek es nodajaik" echo "NODE NAME SCHEDULE CONTACT 3 DAY COUNT LAST SEEN" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "--------------------- -------------------------- --------------------- ------------ ------------" | tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_3X_MISSED" | egrep -v "(ANR|ANS)" | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "elmult 24h Failed kliens utemezesei" echo "NODE NAME SCHEDULE NAME ACTUAL START RUNTIME RESULT" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "------------------ ------------------------ -------------------- -------- -----------------"| tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=tabl "$SQL_Q_FAILED_EVENTS" | egrep -v '(ANS|ANR)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "storage pool masolasi hibak (utolso 24h)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=yes -displ=list 'q act s="copy storage pool" begint=-24' | grep -B1 "Unreadable Bytes: [^0]" | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "primary es copy poolban tarolt adatmennyisegek" echo 'POOLTYPE TOTAL_DATA_GB PENDING_COPY_GB' | tee -a $TMP_HTML_FILE >> $TMP_FILE echo '-------------------------------- --------------- ----------------------' | tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_COMPARE_PRIMARY_COPY_POOLS" | egrep -v '(ANS|ANR)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Automatikusan lemigralt diszk poolok migracioinak szama az elmult 24 oraban" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi POOLS=$(dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "select stgpool_name from stgpools where devclass='DISK'" | tr '\n' '|' | sed 's/ //g') dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=list "q ac s='Migration process * automatically' begint=-24" | awk /${POOLS%|}/'{print $10" ("$12$13")"}' | sort | sed -e 's/Mig//g' -e 's/,)/)/g' | uniq -c | awk '{printf "%2sx %-20s %10s\n",$1,$2,$3}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "tsm szerver(ek) adatmozgasai (utolso 24h)" echo 'DOMAIN_NAME ACTIVITY GB' | tee -a $TMP_HTML_FILE >> $TMP_FILE echo '--------------- --------------- -------------' | tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -commadel -dataonly=y -displ=list "${SQL_UTOLSO24H_ADATMOZGASAI}" | egrep "(ARCHIVE|BACKUP|RESTORE|RETRIEVE)" | awk -F',' '{printf "%-15s %-15s %10s GB\n",$1,$2,$3}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "TSM szerverek aktivitasa (utolso 24h)" echo 'ACTIVITY GB' | tee -a $TMP_HTML_FILE >> $TMP_FILE echo '----------------------- ----------' | tee -a $TMP_HTML_FILE >> $TMP_FILE for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -commadel -displ=list -dataonly=yes "${SQL_UTOLSO24H_AKTIVITASAI}" | grep '.[0-9][0-9]$' | awk -F',' '{printf "%-20s %10s GB\n",$1,$2}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "az utolso 24 ora legtovabb tarto menteseinek nodejai" >$TMP_FILE.toptime for TSM_SZERVER in $TSM_SZERVEREK; do dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "q ac msgno=4964 begint=-24" | egrep -v "(ANR|ANS)" | sed "s/^.*$/${TSM_SZERVER} &/" | awk '{printf $1": "$7" "$11"\n"}' | sed -e 's/)//' -e 's/(.*//' | awk '{printf "%-10s %-30s %11s\n",$1,$2,$3}' >> $TMP_FILE.toptime done cat $TMP_FILE.toptime | sed 's/:/./g' | sort -k3 -r -b -n | sed 's/\./:/g' | head -n12 | tee -a $TMP_HTML_FILE >> $TMP_FILE rm $TMP_FILE.toptime echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "az utolso 24 ora legnagyobb adatmennyiseget mento nodejai" >$TMP_FILE.topsize for TSM_SZERVER in $TSM_SZERVEREK; do dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "q ac msgno=4961 begint=-24" | sed "s/^.*$/${TSM_SZERVER} &/" | awk '{printf $1":"$7" "$13" "$14"\n"}' | sed -e 's/)//' -e 's/(.*//' | awk '{printf "%-40s %8s %2s\n",$1,$2,$3}' >> $TMP_FILE.topsize done awk '{print $1}' $TMP_FILE.topsize | sort | uniq | while read NODE; do awk -v n="$NODE" '{if ($1 == n) { if ($3 == "TB") szorzo=1024*1024; else if ($3 == "GB") szorzo=1024; else szorzo=1; sum = sum + $2*szorzo ; count++}} END {print n " has backed up " sum/1024 " GB total in " count " phases."}' < $TMP_FILE.topsize; done | sort -n -r -k5,5 | head -n 10 | tee -a $TMP_HTML_FILE >> $TMP_FILE rm $TMP_FILE.topsize echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Deduplikacioval megsporolt hely" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi if [ `szerverver $TSM_SZERVER` -gt 5 ]; then dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_DEDUP_SAVINGS" | egrep -v "(ANR|ANS)" | sort -n -t',' -k2 | awk -F',' '{printf "%-40s %8d GB\n",$1,$2}' | tee -a $TMP_HTML_FILE >> $TMP_FILE fi done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ if [ "$TSM_REPL_SZERVEREK" ]; then fejlec "Node replikacios szinkron allapot" for TSM_SZERVER in $TSM_REPL_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi if [ `szerverver $TSM_SZERVER` -gt 5 ]; then dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y 'q replnode *' | egrep -v "(ANR|ANS)" | sed 's/\([0-9]\),\([0-9]\)/\1\2/g' | awk '{if ( $5 != $7 ) print $0}' > $TMP_FILE.repl # Osszeadom egy node osszes filespace-enek objektumszam eltereset cat $TMP_FILE.repl | awk '{print $1}' | sort | uniq | while read NODE; do grep "^$NODE[\t ]" $TMP_FILE.repl | awk 'BEGIN {SZUMMA=0} {SZUMMA=SZUMMA+$7-$5} END {printf "%-25s: %8s\n",$1,SZUMMA}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done fi done rm $TMP_FILE.repl echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE fi #_________________________________________________________________________________________________________________________________________________________________ fejlec "$DEAD_NODE_AGE napnal regebb ota nem bejelentkezett, nem lockolt nodeok" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_DEAD_NODES" | egrep -v "(ANR|ANS)" | sort -n -t',' -k2 | awk -F',' '{printf "%-40s %4d napja\n",$1,$2}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "A TSM szerver altal visszautasitott node bejelentkezesek" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_REFUSED_NODES" | egrep -v '(ANR2034|ANS8001)' | awk '{print $7" "$8}' | sed 's/([0-9]\+)//' | sort | uniq -c | awk '{printf "%4dx %-30s %-17s\n",$1,$2,$3}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "$RECLAIM_TH% reclamation kuszoberteket elert volume-ok szama a storage poolokban" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "$SQL_RECLAIMABLE_VOL_NUM" | grep -v '^AN[RS][0-9][0-9][0-9][0-9][SEWID]' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Nem letezo stg poolra mutato copygroup-ok" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_MISSING_COPYGROUP_DEST" | egrep -v '(ANR|ANS)' | awk -F',' '{printf "%-15s %-15s %-15s %-15s %-15s\n",$1,$2,$3,$4,$5}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "INCLEXCL modositasok CLIENTOPTIONSET-ekben" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_CLIENTO_MESSAGES" | grep -i INCLEXCL | egrep -v '(ANR2034|ANS8001)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "nem hasznalt client optionsetek" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_NEM_HASZNALT_OPTIONSETEK" | egrep -v '(ANR|ANS)' | sort | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Policy aktivalasok (elmult 24 oraban)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=list "q ac msgno=1514 begint=-24" | tr '\n' ' ' | sed -e 's/Date.Time: /\n/g' | grep 'Message' | sed -e 's/ Message: //' -e 's/ *(SESSION: [0-9]*)//' | awk '{if ($NF > 0) {print $0}}' | egrep -v '(ANR2034|ANS8001)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Mentes soran rebound-olt objektumok (elmult 25 oraban)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -displ=list "q ac msgno=4960 begint=-25" | tr '\n' ' ' | sed -e 's/Date.Time: /\n/g' | grep 'Message' | sed -e 's/ Message: //' -e 's/ *(SESSION: [0-9]*)//' | awk '{if ($NF > 0) {print $0}}' | egrep -v '(ANR2034|ANS8001)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Damaged objektumok" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi # NORMAL storage poolok dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "select stgpool_name from stgpools where pooltype='PRIMARY' and not stg_type='DIRECTORY'" | egrep -v 'AN[RS]' | while read POOL; do dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y show damaged $POOL > ${TMP_FILE}.damaged if [[ $(grep 'No damaged files found.' ${TMP_FILE}.damaged | wc -l) -eq 0 ]]; then cat ${TMP_FILE}.damaged | tee -a $TMP_HTML_FILE >> $TMP_FILE fi done # DIRECTORY CONTAINER poolok dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y "select stgpool_name from stgpools where pooltype='PRIMARY' and stg_type='DIRECTORY'" | egrep -v 'AN[RS]' | while read POOL; do dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y query damaged $POOL t=n> ${TMP_FILE}.damaged if [[ $(grep 'QUERY DAMAGED: No match found using this criteria' ${TMP_FILE}.damaged | wc -l) -eq 0 ]]; then cat ${TMP_FILE}.damaged | tee -a $TMP_HTML_FILE >> $TMP_FILE fi done done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE rm ${TMP_FILE}.damaged #_________________________________________________________________________________________________________________________________________________________________ fejlec "Adatbazis REORG uzenetek (utolso 24h)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_REORG_MESSAGES" | egrep -v '(ANR2034|ANS8001)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "Tape hiba uzenetek (utolso 24h)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_HWERR_MESSAGES" | egrep -v '(ANR2034|ANS8001)' | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "ANR9999D tipusu uzenetek (utolso 24h)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "q ac s='ANR9999D_' begint=-24" | grep -v "Administrator `echo $TSM_FELH | tr '[:lower:]' '[:upper:]'` issued command" | fold -w 800 -s | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE #_________________________________________________________________________________________________________________________________________________________________ fejlec "ANR????E tipusu uzenetek, kiveve 2034,1930,1931,0944 (utolso 24h)" for TSM_SZERVER in $TSM_SZERVEREK; do if [ $(echo $TSM_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${TSM_SZERVERNEV[$TSM_SZERVER]}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi dsmadmc -id=$TSM_FELH -pa=$TSM_JELSZO -se=${TSM_SZERVER} -dataonly=y -commadel "$SQL_ACTLOG_ERRORS" | egrep -v '(ANR2034|ANS8001)' | uniq -c -s 19 | sed 's/\(^[\t ]*\)\([0-9]*\)\(.*$\)/\3 \2/' | awk '{if ($NF==1) NF--; else $(NF)="(x" $(NF) ")";print}' | fold -w 800 -s | tee -a $TMP_HTML_FILE >> $TMP_FILE done echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE # OS szintu ellenorzesek if [[ ! -f $SSH_KEY_FILE ]]; then echo "<->" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "- Nincs kulcs az OS-es resz futtatasahoz, igy a riportnak itt vege." >>$TMP_FILE else echo "$HTML_TABLA_LABLEC" >> $TMP_HTML_FILE echo "<br><table border=0 width=\"960\"><tr><td><pre style=\"text-align: left\">" >> $TMP_HTML_FILE echo "| _/_/ _/_/_/ |" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "| _/ _/ _/ |" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "| _/_/_/_/_/ _/ _/ _/_/ _/_/_/_/_/ |" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "| _/ _/ _/ |" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "| _/_/ _/_/_/ |" | tee -a $TMP_HTML_FILE >> $TMP_FILE echo "</pre></td></tr></table><br>" >> $TMP_HTML_FILE echo "$HTML_TABLA_FEJLEC" >> $TMP_HTML_FILE # echo -e "\n_______________________________________ AIX errpt KIMENETEK TEGNAP ES MA __________________________________________" | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $OS_AIX_ERRPT -eq 1 ]; then fejlec "errpt uzenetek az elmult 24 oraban" DATUM=`date +%m%d` TEGNAP=`expr $DATUM - 1` if [ $TEGNAP -lt 1001 ]; then TEGNAP=0$TEGNAP; fi for SSH_SZERVER in $SSH_SZERVEREK; do if [ `ssh $SSH_OPT ${SSH_SZERVER} 'uname -s'` != 'AIX' ]; then continue; fi if [ $(echo $SSH_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${SSH_SZERVER##*@}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi ssh $SSH_OPT ${SSH_SZERVER} 'errpt' | grep " $DATUM" | uniq -c -s 19 | sed -e :a -e 's/\(.\{11\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \6.\2.\3. \4:\5/;ta' | sed 's/\(^[\t ]*\)\([0-9]*\)\(.*$\)/\3 \2/' | awk '{if ($NF==1) NF--; else $(NF)="(x" $(NF) ")";print}' | tee -a $TMP_HTML_FILE >> $TMP_FILE ssh $SSH_OPT ${SSH_SZERVER} 'errpt' | grep " $TEGNAP" | uniq -c -s 19 | sed -e :a -e 's/\(.\{11\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \6.\2.\3. \4:\5/;ta' | sed 's/\(^[\t ]*\)\([0-9]*\)\(.*$\)/\3 \2/' | awk '{if ($NF==1) NF--; else $(NF)="(x" $(NF) ")";print}' | tee -a $TMP_HTML_FILE >> $TMP_FILE done fi echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE # echo -e '\n______________________________________ FAJLRENDSZER TELITETTSEGEK ES HSM __________________________________________' | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $OS_DF -eq 1 ]; then fejlec "fajlrendszer telitettsegek" for SSH_SZERVER in $SSH_SZERVEREK; do if [ $(echo $SSH_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${SSH_SZERVER##*@}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi if [ `ssh $SSH_OPT ${SSH_SZERVER} 'uname -s'` = 'AIX' ]; then ssh $SSH_OPT ${SSH_SZERVER} 'df -g'; fi | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ `ssh $SSH_OPT ${SSH_SZERVER} 'uname -s'` = 'Linux' ]; then ssh $SSH_OPT ${SSH_SZERVER} 'df -Ph'; fi | tee -a $TMP_HTML_FILE >> $TMP_FILE done fi echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE # echo -e '\n___________________________________ HSM FAJLRENDSZER TELITETTSEGEK ES HSM __________________________________________' | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $OS_DDF -eq 1 ]; then fejlec "hsm fajlrendszer allapotok" for SSH_SZERVER in $SSH_SZERVEREK; do if [ $(echo $SSH_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${SSH_SZERVER##*@}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi if [ `ssh $SSH_OPT ${SSH_SZERVER} 'uname -s'` = 'AIX' ]; then ssh $SSH_OPT ${SSH_SZERVER} 'ddf'; fi | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ `ssh $SSH_OPT ${SSH_SZERVER} 'uname -s'` = 'Linux' ]; then ssh $SSH_OPT ${SSH_SZERVER} 'ddf'; fi | tee -a $TMP_HTML_FILE >> $TMP_FILE done fi echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE # echo -e '\n_________________________________________ AIX PAGING SPACE HASZNALAT _____________________________________________' | tee -a $TMP_HTML_FILE >> $TMP_FILE if [ $OS_AIX_LSPS -eq 1 ]; then fejlec "aix paging space kihasznaltsag" for SSH_SZERVER in $SSH_SZERVEREK; do if [ `ssh $SSH_OPT ${SSH_SZERVER} 'uname -s'` != 'AIX' ]; then continue; fi if [ $(echo $SSH_SZERVEREK | wc -w) -gt 1 ]; then echo "> @${SSH_SZERVER##*@}:" | tee -a $TMP_HTML_FILE >> $TMP_FILE; fi ssh $SSH_OPT ${SSH_SZERVER} 'lsps -s | head -n 1' | tee -a $TMP_HTML_FILE >> $TMP_FILE ssh $SSH_OPT ${SSH_SZERVER} 'lsps -s | grep "%"' | tee -a $TMP_HTML_FILE >> $TMP_FILE done fi echo "$HTML_MODUL_LABLEC" >> $TMP_HTML_FILE fi ENDTIME=`date "+%s"` echo "$HTML_TABLA_LABLEC" >> $TMP_HTML_FILE echo "[A riport $((($ENDTIME-$STARTTIME)/60)) perc $((($ENDTIME-$STARTTIME)%60)) mp alatt keszult el - TSM riporter $SCRIPT_VER]" | tee -a $TMP_HTML_FILE >> $TMP_FILE # Riport kuldese DATUM=`date +"%F_%H-%M"` mkdir -p $LOG_DIR >/dev/null if [ $? -eq 0 ]; then cp $TMP_FILE $LOG_DIR/tsm_napi_riport_${DATUM}.log echo "<br>[A riport szoveges valtozata az alabbi utvonalon helyben is le lett tarolva: "`hostname`":$LOG_DIR/tsm_napi_riport_${DATUM}.log]" >> $TMP_HTML_FILE ERR=$? fi if [[ $ERR -ne 0 || ! $ERR ]]; then echo "HIBA: A riportot nem sikerult a $LOG_DIR mappaba menteni!" >>$TMP_HTML_FILE fi sed -i -e 's/^|//' -e 's/|$//' $TMP_HTML_FILE sed -i 's/> @[0-9a-zA-Z_-.]*:/<div style="font-weight:bold; color: #800040; padding: 0px; margin-top: 10px">&<\/div>/' $TMP_HTML_FILE # TSM sztanza szinezes sed -i -e "s/_-_*[^_]*_-_*/<div style=\"text-align: center; font-family: Verdana; font-weight:bold; font-size: 12px; color: #006DC7; margin-top: 10px; padding: 0px;\">&<\/div>$HTML_VONAL/" -e 's/_-_//g' $TMP_HTML_FILE # Szekcio fejlec szinezes #sed -i -e 's/_-_*[^_]*_-_*/<div style="text-align: center; font-family: Verdana; font-weight:bold; font-size: 12px; color: #006DC7; margin-top: 10px; padding: 0px;">&<\/div><hr align=center width="50%" size="1" noshade style="color: #D2D2D2">/' -e 's/_-_//g' $TMP_HTML_FILE # Szekcio fejlec szinezes sed -i 's/\\c/\\\\c/g' $TMP_HTML_FILE # \c karaktert ESCAPE-elni kell, mert lezarja az output csatornat echo -e "<html>${JS_CODE}<body><center><div style=\"font-size: 14px; font-family: courier;\">\n$(cat ${TMP_HTML_FILE})</div></td></tr></body></html>" > $TMP_HTML_FILE if [ `echo "$MAILTO" | grep "@.*\."` ]; then if [[ `which sendmail` && $HTML_EMAIL -eq 1 ]]; then echo -e "To: $MAILTO\nMIME-Version: 1.0\nContent-Type: text/html\nContent-Disposition: inline\nSubject: TSM napi riport ($TSM_SZERVERNEVEK)\n$(cat ${TMP_HTML_FILE})" > $TMP_HTML_FILE cat $TMP_HTML_FILE | sendmail -B 8BITMIME -t -F "TSM riporter" elif [[ ! $HTML_EMAIL -eq 1 && $HTML_EMAIL_CSAT -eq 1 ]]; then echo -e "To: $MAILTO\nSubject: TSM napi riport ($TSM_SZERVERNEVEK)\n$(cat $TMP_FILE)" > $TMP_FILE cp $TMP_HTML_FILE /tmp/tsm_napi_riport_${DATUM}.html cat $TMP_FILE | mailx -a /tmp/tsm_napi_riport_${DATUM}.html -t else echo -e "To: $MAILTO\nSubject: TSM napi riport ($TSM_SZERVERNEVEK)\n$(cat $TMP_FILE)" > $TMP_FILE cat $TMP_FILE | mailx -t fi fi # Takaritas rm napi_ellenorzes.tmp rm $TMP_FILE rm $TMP_FILE.html rm /tmp/tsm_napi_riport_${DATUM}.html 2>/dev/null