TSM Backup Audit - Windows
0 Votes |
Versioning - This is the latest version.
1 | TSM Backup Audit - Windows | 11/29/2012 10:16:02 AM |
2 | TSM Backup Audit - Windows | 12/10/2012 7:35:02 AM |
3 | TSM Backup Audit - Windows | 10/30/2013 12:44:57 PM |
Description
This analysis will help detect problems with TSM. This will not accurately determine the health of backups and may not accurately detect the true status of backups, particularly in the case of computers that have not reproted in recently.
This analysis will need to be activated for those that wish to use it.
The latest version of this analysis can be found here: http://bigfix.me/analysis/details/62
Updates made to this analysis as suggested by JasonWalker
Property Details
2994591 | |
QA - Ready for Production Level Testing | |
TSM Backup Audit - Windows | |
BESC | |
TSM, Backup Audit, Tivoli Storage Manager | |
jgstew on 10/30/2013 12:44:57 PM | |
jgstew on 10/30/2013 12:44:57 PM | |
10956 Views / 32 Downloads | |
![]() ![]() ![]() ![]() ![]() |
Properties
Exists TSM sched log?
Period
12 hours
* Results in a "string"/number |

exists file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log"
Last Activity in TSM
Period
12 hours
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log") then "<dsmsched log missing>" else (modification time of file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log" as string)
Last Sched Success
Period
12 hours
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log") then "<dsmsched log missing>" else if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log" whose(exists lines of it)) then "<file locked by TSM>" else ((lines whose(it contains "' completed successfully." AND it contains " Scheduled event '" AND line number of it = (maximum of line numbers of lines whose(it contains "' completed successfully." AND it contains " Scheduled event '") of file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log")) of file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log") as string)
TSM version installed
Period
1 day
* Results in a true/false |

if(not exists key whose("IBM Tivoli Storage Manager Client" = value "DisplayName" of it) of key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" of native registry) then "<TSM not installed>" else if(not exists key whose("IBM Tivoli Storage Manager Client" = value "DisplayName" of it AND exists value "DisplayVersion" of it) of key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" of native registry) then "<TSM dv reg entry missing>" else (value "DisplayVersion" of key whose("IBM Tivoli Storage Manager Client" = value "DisplayName" of it AND exists value "DisplayVersion" of it) of key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" of native registry as string)
Last Successful Backup
Period
6 hours
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\tsmstats.ini") then "<tsmstats file missing>" else (modification time of file "C:\Program Files\Tivoli\TSM\baclient\tsmstats.ini" as string)
TSM Server
Period
1 day
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") then "<no dsm opt>" else if(not exists line whose(it as uppercase contains "TCPSERVERADDRESS") of file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") then "<no tcpserveraddress>" else ( following text of first "TCPSERVERADDRESS" of (it as uppercase) of line whose( ( if it does not contain "*" then it else preceding text of first "*" of it) as uppercase contains "TCPSERVERADDRESS" ) of file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt" as trimmed string)
TSM Node Name
Period
2 days
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") then "<no dsm opt>" else if(not exists line whose(it as uppercase contains "NODENAME ") of file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") then "<no nodename>" else (concatenation " " of substrings separated by " " whose (it != "") of following text of first "NODENAME " of (it as uppercase) of line whose(( if it does not contain "*" then it else preceding text of first "*" of it) as uppercase contains "NODENAME ") of file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt" as trimmed string)
Num of crashes
Period
1 day
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsmcrash.log") then "<no dsmcrash log>" else (number of lines whose (it contains "IBM Tivoli Storage Manager") of file "C:\Program Files\Tivoli\TSM\baclient\dsmcrash.log" as string)
Client exe Version
Period
1 day
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsm.exe") then "<dsm.exe missing>" else if(not exists version of file "C:\Program Files\Tivoli\TSM\baclient\dsm.exe") then "<dsm.exe version missing>" else (version of file "C:\Program Files\Tivoli\TSM\baclient\dsm.exe" as string)
Last crash?
Period
1 day
* Results in a true/false |

if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsmcrash.log") then "<dsmcrash log missing>" else (modification time of file "C:\Program Files\Tivoli\TSM\baclient\dsmcrash.log" as string)
VC++2010x86?
Period
1 day
Used in 2 fixlets | * Results in a true/false |

exists key whose (value "DisplayName" of it as string contains "Microsoft Visual C++ 2010" AND (it >= "10.0.40219" as version) of (value "DisplayVersion" of it as string as version)) of key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" of x32 registry
VC++2010x64?
Period
1 day
* Results in a true/false |

if (x64 of operating system AND exists x64 registry) then (exists key whose (value "DisplayName" of it as string contains "Microsoft Visual C++ 2010" AND (it >= "10.0.40219" as version) of (value "DisplayVersion" of it as string as version)) of key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" of x64 registry) as string else "<n/a - 32bit Machine>"
TSM Sched Service Running?
Period
6 hours
* Results in a true/false |

exists running service "TSM Scheduler Service"
TSM Client Acceptor Service Running?
Period
6 hours
* Results in a true/false |

exists running service "TSM Client Acceptor"
Relevance
isWindows (Relevance 1172)

windows of operating system
Used in 2 analyses | * Results in a true/false |

(exists key whose("IBM Tivoli Storage Manager Client" = value "DisplayName" of it) of key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" of native registry) OR (exists file "C:\Program Files\Tivoli\TSM\baclient\dsmsched.log") OR (exists file "C:\Program Files\Tivoli\TSM\baclient\tsmstats.ini") OR (exists file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") OR (exists file "C:\Program Files\Tivoli\TSM\baclient\dsmcrash.log") OR (exists file "C:\Program Files\Tivoli\TSM\baclient\dsm.exe") OR (exists service "TSM Scheduler Service")
Sharing
Social Media: |
Comments
![]() |
|
I uploaded my updates at http://bigfix.me/cdb/analysis/94 I check for comments via "*" character on TCPServerAddress and NodeName, and add a check for TSM Client Acceptor service along with the TSM Scheduler service; in my environment a stopped Scheduler and running Client Acceptor is expected. |
![]() |
|
Thanks Jason. I see why those changes were needed. I'll have to take a look and update my code sometime. You could upload a copy of your modified version to bigfix.me and put a reference to it here. |
![]() |
|
if(not exists file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") then ".no dsm opt." else if(not exists line whose(it as uppercase contains "TCPSERVERADDRESS") of file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt") then ".no tcpserveraddress." else ( following text of first "TCPSERVERADDRESS" of (it as uppercase) of line whose( ( if it does not contain "*" then it else preceding text of first "*" of it) as uppercase contains "TCPSERVERADDRESS" ) of file "C:\Program Files\Tivoli\TSM\baclient\dsm.opt" as trimmed string) I changed the "TCPSERVERADDRESS" comparisons to not contain a trailing space (because mine contain a trailing tab instead), and to look sort out the lines containing a comment (delimited by "*" character), and to trim the result (my results contained tabs and spaces) |
![]() |
|
I'm having trouble in a couple of cases with the dsm.opt parsing - 1) DSM.OPT contains comments, like * TCPSERVERAddress - set to our standard TCPSERVERAddress 192.168.1.1 2) Cases where we have parameter[tab]value I worked around this in my copy of the fixlet but cant seem to post code in the comments block. |
![]() |
|
Some other info found here as well: HKEY_LOCAL_MACHINE\SOFTWARE\IBM\ADSM |
![]() |
|
Info about the TSM Scheduler is typically located here: HKLM\SYSTEM\CurrentControlSet\services\TSM Client Scheduler |
![]() |
|
at the moment the error messages are showing up as 'then ""' above, but the error messages are actually there, just being mistaken for HTML tags since they are currently enclosed in <> |