Dan -- I've been running a perl script on AIX to do this for several years (STK 9710 first, then the 3584).
My script tails the TSM log and works in this order: 1. 'checkin libv <library> search=bulk stat=private checklabel=barcode' 2. look for the ANR8373I message, peel off the reply number, and issue the 'REPLY #' 3. look for the ANR8430I message, peel off the volume number, and update the volume to access readwrite 4. look for the ANR8431I and exit By checking all volumes in as private and then updating to read/write the corner cases go away; expired tapes go scratch, old database backups stay private until deleted, and (big one) No Thinking Is Required. And by using perl and the File::Tail module, there's no requirement for 'sleep' and no timing issues if TSM goes off to do tape dismounts right after you fire up the script. The process uses Owen Crow's Adsm.pm perl module from several years ago -- let me know if you want to take a swack at what I've got. Tom Kauffman NIBCO, Inc -----Original Message----- From: Dan Foster [mailto:[EMAIL PROTECTED] Sent: Monday, March 03, 2003 3:24 AM To: [EMAIL PROTECTED] Subject: Automatic checkin on a 3584? Howdy - I seem to be having some sort of timing issues with the checkin process via an automated script. The procedure: 1. Fill the I/O station(s) with brought back tapes to be checkin'd 2. Issue a 'checkin libvol <library> search=bulk status=scratch checklabel=barcode' 3. Wait a bit for a request to appear in the request queue 4. Issue a reply corresponding to what appears in 'q req' 5. Wait a bit for the whole checkin process to finish in search mode 6. Issue a 'checkin libvol <library> search=bulk status=private checklabel=barcode' 7. Wait a bit for a request to appear in the request queue 8. Issue a reply corresponding to what appears in 'q req' Manually, works great. My script parses all data just fine using dsmadmc in batch mode (with -id= -pass=...) and the command syntax is correct -- I know because it works fine by hand. I'm a little stuck in getting the exact timing *just right* for the delays as well as the best way to construct a while loop logic to get the timing right. It just runs through it so fast that it exits before it's got a chance to answer both requests. Detecting certain corner cases seems a little interesting when you throw in vagaries of timing, also. Alas, "cheating" by direct loading and using search=yes to avoid the requests isn't an option for the weekly tape swaps. ;) Does anyone happen to have a similiar script fragment or even just suggestions on how to construct the while loop 'just so'? :) Anything would be much appreciated! (I'm trying to make the limited human interaction with tapes reasonably bulletproof without requiring them to manually wade through TSM - reduces chances of errors and not all personnel are skilled.) -Dan
