# Filename: PRESHUT # # Courtesy of Beechglen Development # Cincinnati, Ohio # (513) 922-0509 # http://www.beechglen.com # mailto:support@beechglen.com # # Unsupported freeware. Beechglen assumes no liability # for use or misuse of this script. # # # Change history. 3/16/2004 Added disk space check. Systems # with less than < 16384 sectors # free space won't boot with # NMSGDT1A, NMSGDT2A, or NMSGDV1A # =============================================================== echo echo This script should be run prior to a system shutdown to echo gracefully stop processing. If there are any batch jobs running echo it is your responsibility to verify that they can be aborted echo with no adverse effects on the system echo # setvar hpautocont,true setvar InvVideo,chr(27) + "&dB" limit 0,0 # =============================================================== if hpaccount <> "SYS" or hpuser <> "MANAGER" or hpldevin <> 20 then echo echo You must be logged on as MANAGER.SYS on LDEV 20 to echo execute this script. echo return endif # =============================================================== # - Prompt section. Answer questions here # echo echo I will be creating a copy of the current configuration echo to the group PREVCFG.SYS If for some reason you need to echo reboot the system to get back to this known point in time echo (for instance the new configuration is bad) then you can echo issue the ISL command START NORECOVERY GROUP=PREVCFG echo echo Press [Return] to continue echo input Answer # # - Ask if any configuration listings are needed. # echo echo !InvVideo Are you shutting down for system maintenance? echo echo If you are planning to work on or change hardware echo components you MUST power off all connected devices. echo SCSI adapters and their connected devices are especially echo vulnerable to blown fuses or damage when maintenance echo is performed while they are running. echo echo Additionally, because the results of maintenance are echo never guaranteed, it is prudent to have an SLT and a echo backup prior to any of these functions. echo input CreateSLT,'!InvVideo Would you like me to create an SLT?' setvar CreateSLT,lft(ups(CreateSLT),1) echo If you are shutting down to perform an operating system echo update; or to install, replace, or repair hardware; you echo should have a current configuration listing. echo input PrintConfigList,'!InvVideo Would you like me to produce & a configuration listing?' setvar PrintConfigList,lft(ups(PrintConfigList),1) # =============================================================== # -- Shut down ESP data collection. There is a timing conflict # during a system shutdown where active processes that access # the file system after it has been closed potentially can # cause a system abort before the system reaches SHUT 6. # ESP/3000 is susceptible to this bug. if finfo("/ESP","EXISTS") then echo !InvVideo Shutting down ESP/3000 data collection. purge ESPRUN.PUB.SYS >$null endif # =============================================================== # -- Verify that the creator of SYSSTART.PUB.SYS is MANAGER.SYS # If not, it will not execute during bootup. if finfo("SYSSTART.PUB.SYS","EXISTS") then if finfo("SYSSTART.PUB.SYS","OWNER") <> "MANAGER.SYS" then altfile sysstart.pub.sys;owner=MANAGER.SYS;groupid=SYS echo echo !InvVideo I corrected the creator of SYSSTART.PUB.SYS to echo !InvVideo be MANAGER.SYS echo endif endif # =============================================================== # -- Shut down network services. If you run SNA you should put # your SNACONTROL shutdown commands in this section as well. echo !InvVideo Shutting down network transport services. inetd.net -k stmshut.diag ABORTJOB FTP.SYS pause 5 NSCONTROL STOP NSCONTROL ABORT NETCONTROL STOP setvar NETRunning,"Y" while NETRunning = "Y" file testit=netcp.net.sys;exc continue setvar hpfserr,0 print *testit;out=$null;end=1 >$null if hpfserr = 90 or hpfserr = 91 then pause 5 else setvar NETRunning,"N" endif endwhile echo echo Network transport services shutdown is complete. echo # =============================================================== # -- Verify NMCONFIG FILE.If the DTS or NS subsystems are not # validated then validate them. # Run NMMGRVAL with parm=1 to set variables that indicate # which subsystems in NMCONFIG are not validated. # For any that are not, create a script to automatically # validate. echo echo !InvVideo Checking NMCONFIG file for non-validated subsystems. echo nmmgrval.pub.sys,1 setvar ValAny, VALDTS + VALNETXPORT + VALIBM + VALOSI if ValAny > 0 then purge NMMGRCMD,temp >$null build NMMGRCMD;rec=-80,,f,ascii;temp file nmcmd=nmmgrcmd,oldtemp;dev=disc echo openconf nmconfig.pub.sys >>*nmcmd if VALDTS > 0 then echo The DTS subsystem is not validated. I will validate it. echo validateconf dts >>*nmcmd endif if VALNETXPORT > 0 then echo NETXPORT subsystem is not validated. I will validate it. echo validateconf netxport >>*nmcmd endif if VALIBM > 0 then echo The IBM subsystem is not validated. I will validate it. echo validateconf ibm >>*nmcmd endif if VALOSI > 0 then echo The OSI subsystem is not validated. I will validate it. echo validateconf osi >>*nmcmd endif echo exit >>*nmcmd file formlist=$stdlist file nmmgrcmd,oldtemp;dev=disc echo Validating selected subsystems. nmmgr reset nmmgrcmd reset formlist reset nmcmd purge nmmgrcmd,temp else echo All NMCONFIG subsystems are validated. echo endif # =============================================================== # # - Create backup copy of the current system configuration. # echo echo !InvVideo Create a copy of the current system configuration. echo purge sysgin,temp >$null build sysgin;rec=-80,,f,ascii;temp file sgcmd=sysgin,oldtemp;dev=disc echo @.pub.sys,@.net.sys;directory;show >indfile echo permyes on >>*sgcmd echo keep >>*sgcmd echo exit >>*sgcmd file sysgin,oldtemp;dev=disc sysgen bootup,prevcfg # =============================================================== if CreateSLT = "Y" then purge sysgin,temp >$null build sysgin;rec=-80,,f,ascii;temp file sgcmd=sysgin,oldtemp;dev=disc echo @.pub.sys,@.net.sys;directory;show >indfile echo tape store=^indfile >>*sgcmd echo exit >>*sgcmd file sysgin,oldtemp;dev=disc sysgen config if cierror <> 0 then echo echo !InvVideo =================================== echo !InvVideo The SLT is BAD! Do not unless you echo !InvVideo know you can recover without it. echo !InvVideo =================================== echo endif purge sysgin,temp purge indfile,temp reset sgcmd reset sysgin endif if PrintConfigList = "Y" then purge sysgin,temp >$null build sysgin;rec=-80,,f,ascii;temp file sgcmd=sysgin,oldtemp;dev=disc echo io >>*sgcmd echo ld >>*sgcmd echo lp >>*sgcmd echo exit >>*sgcmd echo exit >>*sgcmd file sysgout;dev=lp file sysgin,oldtemp;dev=disc sysgen config echo echo !InvVideo Config listing has been produce on device LP. echo purge sysgin,temp reset sysgout reset sgcmd reset sysgin endif echo # =============================================================== # # - Check to see if ESP/3000 has shut down. If not, # wait for it. It should take no longer than 2 minutes # or so from the time it is signalled. if finfo("/ESP","EXISTS") then setvar ESPRunning,"Y" setvar NumTries,0 while ESPRunning = "Y" file testit=espmain.pub.esp;exc continue setvar hpfserr,0 print *testit;out=$null;end=1 >$null if hpfserr = 90 or hpfserr = 91 then setvar NumTries,Numtries + 1 if NumTries = 1 then echo echo ESP/3000 is still running. Waiting for it to echo completely shutdown. This should take no more echo 2 minutes. endif pause 10 else setvar ESPRunning,"N" endif endwhile endif # =============================================================== # Disk space check section # Check for critically low disk space on system volset that # could prevent the system from rebooting. See SR8606351808 # Also check for contiguous disk space on LDEV 1 that could # prevent update from SLT. echo echo Checking free disk space on MPEXL_SYSTEM_VOLUME_SET echo (1 sector = 256 bytes) echo deletevar _c_@ >$null purge chkdisk1 >$null build chkdisk1;rec=-80,,f,ascii;disc=100;nocctl file chkdisk1=chkdisk1,old discfree.pub.sys "d,,mpexl_system_volume_set" >*chkdisk1 purge chkdisk2,temp > $null grep.hpbin.sys "'AVAIL TO' CHKDISK1" > CHKDISK2 file chkdisk2=chkdisk2,oldtemp input _c_chkdisk2_rec < *chkdisk2 setvar _c_avail_trans_sectors str('!_c_chkdisk2_rec',24,-34) setvar _c_avail_perm_sectors str('!_c_chkdisk2_rec',62,-72) setvar _c_avail_trans repl("!_c_avail_trans_sectors",' ','0') setvar _c_avail_perm repl("!_c_avail_perm_sectors",' ','0') setvar _c_avail_trans_n !_c_avail_trans setvar _c_avail_perm_n !_c_avail_perm # ...the following data sourced from ":discfree d" output... # !_c_avail_perm_n permanent sectors exist on the sysvolset. # !_c_avail_trans_n transient sectors exist on the sysvolset. if _c_avail_perm_n < 100000 echo ![InvVideo]There are less than 100,000 permanent sectors echo ![InvVideo]available on the system volume set. echo echo Some systems have been known to completely fail to reboot echo when critically low on permanent disk space. echo echo Contact Beechglen at (513) 922-0509 for assistance with echo cleaning up disk space. Use BIGFILES.PUB.ESP (download echo the latest version it from http://www.beechglen.com) echo to identify large files that are targets for removal to echo free up disk space. echo echo ![InvVideo]It is recommended that you NOT continue with this echo ![InvVideo]system shutdown until you have remedied this disk echo ![InvVideo]space situation. echo echo Press [RETURN] to continue echo input Answer else echo Free disk space OK for the purposes of rebooting echo endif echo echo Checking fragmented disk space on LDEV 1. echo purge chkdisk1 > $null purge chkdisk2,temp > $null purge chkdisk3 > $null build chkdisk3;rec=-80,,f,ascii;disc=100;nocctl file chkdisk3=chkdisk3,old discfree.pub.sys "a,1" >*chkdisk3 purge chkdisk4,temp > $null xeq grep.hpbin.sys "'\-AND UP' CHKDISK3" >CHKDISK4 file chkdisk4=chkdisk4,oldtemp input _c_chkdisk4_rec < *chkdisk4 setvar _c_free_contig_nbr100blks str('!_c_chkdisk4_rec',1,-6) setvar _c_free_contig_100ksects str('!_c_chkdisk4_rec',52,-61) setvar _c_free_nbr100blks repl("!_c_free_contig_nbr100blks",' ','0') setvar _c_free_100ksects repl("!_c_free_contig_100ksects",' ','0') setvar _c_free_nbr100blks_n !_c_free_nbr100blks setvar _c_free_100ksects_n !_c_free_100ksects purge chkdisk3 > $null purge chkdisk4,temp > $null # the following data sourced from ":discfree 'a,1'" output... # !_c_free_nbr100blks_n (100,000+) sector blocks are on ldev #1 # and these blocks add up to !_c_free_100ksects_n sectors total. if _c_free_100ksects_n < 200000 echo ![InvVideo]Overall there is less than 200,000 contiguous echo ![InvVideo]sectors of permanent disk space on LDEV 1. echo echo Having such a small amount of contiguous echo permanent disk space on LDEV #1 could prevent echo an UPDATE from CSLT operation from succeeding. echo echo It is suggested you take steps to free up contiguous echo permanent disk space on LDEV 1. Feel free to call echo Beechglen at (513) 922-0509 for assistance. echo echo Press [RETURN] to continue echo input Answer else echo Fragmented disk space check on LDEV 1 results are OK echo for the purposes of rebooting. echo endif # =============================================================== echo echo SHUTDOWN pre-processing has completed. You may now shut echo the system down after any actions listed above are complete. echo Press CTL-A then type in SHUTDOWN and press [RETURN]. echo # ===============================================================