TSM script tricks / astuces

How to use variables into scripts

Pratical example

DSMADMC1="/usr/tivoli/tsm/client/ba/bin64/dsmadmc -id=${tsm_admin} -pa=${tsm_password} -se=${srv}"
OPT_COMMA="-comma"
OPT_TAB="-tab"
OPT_DATAONLY="-dataonly=yes"

for days in {0..5}
do
  (( BEGIN = 24 * days ))
  (( END = (24 * days) + 24 ))

  $DSMADMC $OPT_COMMA $OPT_DATAONLY "SELECT entity,cast(float(sum(bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) as GB FROM summary where ( activity='ARCHIVE' OR lower(activity) like '%backup%') AND entity<>'' AND end_time>current_timestamp-$END hours and end_time<current_timestamp-$BEGIN hours GROUP BY entity"
done

Tricks for dates:

jour -X --> date Linux  (into AIX RPM package coreutils, or linux native date)
expired=1
YESTERDAY=$(/opt/freeware/bin/date +%Y-%m-%d -d "$expired day ago")
TODAY=$(/opt/freeware/bin/date +%Y-%m-%d)

In TSM select yesterday is : current_timestamp-24 hours

Exemple of script with simplified syntax

[root@tsm01 bin]> cat check_vol.sh
#!/bin/bash

tsm_admin=report
tsm_password=report
DSMADMC="dsmadmc -id=${tsm_admin} -pa=${tsm_password}"

node=MYSQL01
mydate=1 # today -1
NODE=$(echo "'"$node"'")
date1=$(/opt/freeware/bin/date +%Y-%m-%d -d "$mydate day ago")
DATE=$(echo "'"$date1"'")

SELECTION=$(echo "SELECT volumeusage.volume_name FROM volumeusage , volumes WHERE volumeusage.volume_name=volumes.volume_name and volumeusage.node_name=$NODE" and volumes.last_write_date<$DATE")

$DSMADMC "$SELECTION"

FIXME Never use UNIX OS commands nor predefined variables as scripts variables –> I use date1, not date (which is a UNIX command!)