$! ************************************************************************* $! * * $! * VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential * $! * proprietary software licensed by VMS Software, Inc., and is not * $! * authorized to be used, duplicated or disclosed to anyone without * $! * the prior written permission of VMS Software, Inc. * $! * Copyright 2017 VMS Software, Inc. * $! * * $! ************************************************************************* $! $ vs$version = "V-002.16" $! $!++ $! Procedure: Configuration gathering procedure $! $! Abstract: This procedure collects system configuration to be $! used by VMS Software support in HTML and/or text format $! $! Author: VSI support team / Homi FARIS $! Created: 01-Feb-2019 $! $goto Skip_History $deck $! Parameters $! P1 = "TEXT" generate text report only $! = "BOTH" generate both html and text report $! = "" or "HTML" generate html report only (default) $! $! P2 = "DETailed" More detailed report $! P3 = "V" verbose terminal output $! P4 = List of topics to skip for example "nodecwindows/noApache" $eod $Skip_History: $! $! BEGIN: VSI Support Standard DCL Script Start $ ThisScript = f$environment("PROCEDURE") $ if f$trnlnm(f$parse(ThisScript,,,"NAME") + "_VERIFY") $ then $ save_verify = 'f$verify(1) $ else $ save_verify = 'f$verify(0) $ endif $! $! Save invoker context $Save_Invoker_Context: $!-------------------- $ save_dir = f$environment("DEFAULT") $ save_on = f$environment("ON_SEVERITY") $ save_msg = f$environment("MESSAGE") $ save_privs = "" ! required privs may vary $! define commonly used symbols $ set symbol/verb/scope=(nolocal,noglobal) $ say = "write sys$output" $ vs$spaces = " " $ vs$not_configured = "--- not configured ---" $! $ P1=f$extract(0,1,f$edit(P1,"upcase")) $ vs$html="YES" $ if P1.eqs."T" then vs$html="NO" $ if P1.eqs."T" .or. P1.eqs."B" $ then vs$text="YES" $ else vs$text="NO" $ endif $ vs$detailed = "NO" $ if f$extract(0,1,f$edit(P2,"upcase")).eqs. "D" then vs$detailed = "YES" $ say " " $ say "vsi$support version ''vs$version'" $ say "Visit https://vmssoftware.com/products/vsisupport for updates" $ say " " $ if vs$detailed then say "Detailed report" $ vs$verbose = "NO" $ if P3.nes."" then vs$verbose = "YES" $ vs$arch_type= f$edit(f$getsyi("arch_name"),"UPCASE,TRIM") ! get the system's architecture $ vs$skip=f$edit(P4,"lowercase,collapse") $! $ start_time = f$time() $ say " " $! $! END: VSI Support Standard DCL Script Start $Main: $!--- $ vs$not_priv="" $ req_privs = "OPER,SECURITY,SYSPRV,CMKRNL,LOG_IO,SYSNAM,CMEXEC,TMPMBX,NETMBX,WORLD,SYSLCK,SHARE" $ got_privs = f$privilege("''req_privs'") $ if got_privs then GOTO Main_Processing $ save_privs = f$setprv(req_privs) $ if .not. f$privilege(req_privs) $ then $ vs$not_priv = "Some requested privileges missing, some results unpredictable" $ say "''vs$not_priv'" $ say " " $ endif $! $Main_Processing: $!--------------- $ gosub Init_Proc $ set noon $ on control_y then goto Control_Y_Handler $ create vs$errors.log $ define/nolog sys$error vs$errors.log $!----------------------------------------------------------------------------------------------- $ call Create_Chapter "system" "System" $! $!------------------------------------------------------- $ call Create_Topic "overview" "System Overview" $ open /write vs$tempfile vs$dcl2.txt $ write vs$tempfile "System: ", f$getsyi("nodename") $ write vs$tempfile "OpenVMS version: ", f$getsyi("version")," ", f$getsyi("arch_name") $ write vs$tempfile "Last boot: ", f$getsyi("boottime") $ write vs$tempfile "Model: ", f$getsyi("Hw_name") $ write vs$tempfile "Serial number: ", f$getsyi("serial_number") $ close vs$tempfile $ call Write_File "" "vs$dcl2.txt" $ delete /nolog vs$dcl2.txt; $ call Write_DCL "show system /noprocess" $!------------------------------------------------------- $ if f$locate("cpu",vs$skip).ne.f$length(vs$skip) then goto End_System_Topic $ call Create_Topic "cpu" "CPU" $ call Write_DCL "Show CPU" $ call Write_DCL "Show CPU /full" $ call Write_DCL "show fastpath" $ if f$search("sys$test:hthreads.exe").nes."" then call Write_DCL "run sys$test:hthreads" $ call Write_SDA "show Rad /all" $! $ if f$getsyi("arch_name").nes."Alpha" then goto End_System_Topic $ call Create_Title "Alpha console variables:" $ call Write_DCL "write sys$output f$getenv(""Auto_action"")" $ call Write_DCL "write sys$output f$getenv(""Boot_dev"")" $ call Write_DCL "write sys$output f$getenv(""Bootdef_dev"")" $ call Write_DCL "write sys$output f$getenv(""Booted_dev"")" $ call Write_DCL "write sys$output f$getenv(""Boot_osflags"")" $ call Write_DCL "write sys$output f$getenv(""Booted_osflags"")" $ call Write_DCL "write sys$output f$getenv(""Boot_reset"")" $ call Write_DCL "write sys$output f$getenv(""dump_dev"")" $End_System_Topic: $! $!------------------------------------------------------ $ if f$locate("memory",vs$skip).ne.f$length(vs$skip) then goto End_Memory_Topic $ call Create_Topic "memory" "Memory" $ call Write_DCL "show memory /all/full" $ call Write_SDA "clue memory /statistic" $ call Write_DCL "install list /global/summary" $ call Write_SDA "clue memory /layout" $ define/user_mode/nolog SYSMANINI NL: $ call Write_DCL "mcr sysman reserved_memory show" $ if f$search("SYS$LOADABLE_IMAGES:VMS$SYSTEM_IMAGES.DATA").nes."" then - call Write_DCL "type SYS$LOADABLE_IMAGES:VMS$SYSTEM_IMAGES.DATA" $End_Memory_Topic: $!------------------------------------------------------- $ if f$locate("cluster",vs$skip).ne.f$length(vs$skip) then goto Cluster_Topic_End $ call Create_Topic "cluster" "Clustering" $ call Write_DCL "show system /cluster /full /noprocess" $ create vs$sc.ini $DECK add hw_type add votes add expected_votes add quorum add qdvotes add qd_name add qf_vote add cl_expected_votes add cl_quorum add cl_votes add cl_qdvotes add formed add last_transition write vs$sc.txt exit $EOD $! $ define/user/nolog show_cluster$init vs$sc.ini $ define /user sys$output nl: $ show cluster /cont $ define/user sys$output nl: $ edit/edt vs$sc.txt write vs$sc.txt 3:end-39 quit $! $ call Create_Title "Cluster View:" $ call Write_File "" "vs$sc.txt" $ delete /nolog vs$sc.txt;*, vs$sc.ini; $! $ call Create_Title "Cluster Parameters:" $ call Write_DCL "mcr sysgen show /cluster" $! $ if .not. f$getsyi("cluster_member") then goto Cluster_Topic_End $ call Create_Title "Cluster Group:" $ define/user_mode/nolog SYSMANINI NL: $ call Write_DCL "mcr sysman configuration show cluster_authorization" $ call Create_Title "Port, Circuit & channel information: " $ call Write_DCL "mcr scacp show port" $ call Write_DCL "mcr scacp show circuit" $ call Write_DCL "mcr scacp show lan_device /all" $ call Write_DCL "mcr scacp show vc /all" $ call Write_DCL "mcr scacp show channel /all" $ call Write_DCL "mcr scacp show channel /ecs" $ call Write_DCL "mcr scacp show channel /ipchannel" $ if vs$detailed then call Write_DCL "mcr scacp show ip /all /sda" $! $ call Create_Title "IPCI:" $ if f$search("sys$system:tcpip$cluster.dat").nes."" then call Write_DCL "type sys$system:TCPIP$CLUSTER.DAT" $ if f$search("sys$system:PE$IP_CONFIG.DAT").nes."" then call Write_DCL "type sys$system:PE$IP_CONFIG.dat" $! $ call Create_Title "Cluster system disk(s):" $ create vs$show_system_disks.com $DECK set environment /cluster set timeout 00:00:15 do pipe show logical sys$sysdevice ; show logical sys$topsys ; write sys$output " " $EOD $ define/user_mode/nolog SYSMANINI NL: $ call Write_DCL "mcr sysman @vs$show_system_disks.com" $ delete /nolog/noconfirm vs$show_system_disks.com; $! $Cluster_Topic_End: $!-------------------------------------------------------- $ if f$locate("sysfiles",vs$skip).ne.f$length(vs$skip) then goto Sysfiles_Topic_End $ call Create_Topic "sysfiles" "System files location" $ call Write_DCL "show logical /full SYSUAF" $ vs$sysuaf = f$trnlnm("SYSUAF","Lnm$System_Table") $ if vs$sysuaf.nes."" $ then $ if f$locate(":",vs$sysuaf).lt.f$length(vs$sysuaf) $ then $ vs$disk=f$element(0,":",vs$sysuaf) $ if f$trnlnm(vs$disk).nes."" then call Write_DCL "show logical ''vs$disk'" $ endif $ else $ if f$search("sys$system:SYSUAF.DAT").nes."" then - call Write_DCL "directory /file_id /date/width=filename=40 sys$system:SYSUAF.DAT" $ endif $! $ call Write_DCL "show logical /full RIGHTSLIST" $ if f$trnlnm("RIGHTSLIST","Lnm$System_Table").eqs."" $ then $ if f$search("sys$system:RIGHTSLIST.DAT").nes."" then - call Write_DCL "directory /file_id /date/width=filename=40 sys$system:RIGHTSLIST.DAT" $ endif $ call Write_DCL "show logical /full QMAN$MASTER" $ call Write_DCL "show logical /full NET$PROXY" $ if f$trnlnm("NET$PROXY","Lnm$System_Table").eqs."" $ then $ if f$search("sys$system:NET$PROXY.DAT").nes."" then - call Write_DCL "directory /file_id /date/width=filename=40 sys$system:NET$PROXY.DAT" $ endif $ call Write_DCL "show logical /full NETPROXY" $ if f$trnlnm("NETPROXY","Lnm$System_Table").eqs."" $ then $ if f$search("sys$system:NETPROXY.DAT").nes."" then - call Write_DCL "directory /file_id /date/width=filename=40 sys$system:NETPROXY.DAT" $ endif $ call Write_DCL "show logical /full LMF$LICENSE" $ if f$trnlnm("LMF$LICENSE","Lnm$System_Table").eqs."" $ then $ if f$search("sys$system:LMF$LICENSE.LDB").nes."" then - call Write_DCL "directory/file_id /date/width=filename=40 sys$system:LMF$LICENSE.LDB" $ else $ if f$search("LMF$LICENSE").nes."" then - call Write_DCL "directory/file_id /date/width=filename=40 LMF$LICENSE" $ endif $ if f$trnlnm("SECURITY_AUDIT").nes."" $ then $ call Write_DCL "show logical /full SECURITY_AUDIT" $ endif $ call Write_DCL "show logical /full VMSMAIL_PROFILE" $ if f$trnlnm("VMSMAIL_PROFILE").eqs."" $ then if f$search("sys$system:VMSMAIL_PROFILE.DATA").nes."" then - call Write_DCL "directory /file_id /date/width=filename=40 sys$system:VMSMAIL_PROFILE.DATA" $ endif $! $ call Write_DCL "show logical /full LAN$NODE_DATABASE" $ call Write_DCL "show logical /full NETNODE_REMOTE" $ call Write_DCL "show logical /full NETNODE_UPDATE" $ call Write_DCL "show logical /full NETOBJECT" $ call Write_DCL "show logical /full SYSUAFALT" $ call Write_DCL "show logical /full SYSALF" $ call Write_DCL "show logical /full VMS$AUDIT_SERVER" $ call Write_DCL "show logical /full VMS$OBJECTS" $ call Write_DCL "show logical /full VMS$PASSWORD_DICTIONARY" $ call Write_DCL "show logical /full VMS$PASSWORD_HISTORY" $ call Write_DCL "show logical /full VMS$PASSWORD_POLICY" $ call Write_DCL "show logical /full SYS$JOURNAL" $Sysfiles_Topic_end: $!-------------------------------------------------------- $ if f$locate("sysgen",vs$skip).ne.f$length(vs$skip) then goto Sysgen_Topic_End $ call Create_Topic "sysgen" "Sysgen parameters" $ call Write_DCL "mcr sysgen show /all" $ call Write_DCL "mcr sysgen show /special" $ if f$search("sys$system:modparams.dat").eqs."" $ then $ call Create_Title "Error: sys$system:MODPARAMS.DAT is missing" $ goto Sysgen_Topic_End $ endif $ if .not. vs$detailed then goto Sysgen_Topic_End $ call Write_DCL "type sys$system:MODPARAMS.DAT" $ search/nowarning sys$system:MODPARAMS.DAT AGEN$INCLUDE_PARAMS /output=vs$agen.tmp $ if $status.ne.1 then goto Sysgen_Topic_3 $ call Create_Title "External Parameter File(s) included by MODPARAMS.DAT:" $ open /read /error=Sysgen_Topic_3 vs$agen_file vs$agen.tmp $Sysgen_Topic_1: $ read/end_of_file=Sysgen_Topic_2 vs$agen_file vs$agen_rec $ vs$agen_rec=f$element(1," ",f$edit(vs$agen_rec,"trim,compress")) $ if f$search(vs$agen_rec).nes."" then call Write_DCL "type ''vs$agen_rec'" $ goto Sysgen_Topic_1 $Sysgen_Topic_2: $ close vs$agen_file $Sysgen_Topic_3: $ if f$search("vs$agen.tmp").nes."" then delete/nolog/noconfirm vs$agen.tmp; $Sysgen_Topic_End: $!-------------------------------------------------------- $ if f$locate("patches",vs$skip).ne.f$length(vs$skip) then goto Patches_Topic_End $ call Create_Topic "patches" "OpenVMS ECOs" $ call Write_DCL "product show product VMS /full" $ if vs$detailed $ then $ call Write_DCL "product show recovery_data /full" $ else $ call Write_DCL "product show recovery_data" $ endif $Patches_Topic_End: $!-------------------------------------------------------- $ if f$locate("boot",vs$skip).ne.f$length(vs$skip) then goto Boot_Topic_End $ call Create_Topic "boot" "Boot, Startup & System disk" $ call Write_DCL "show logical SYS$TOPSYS" $ call Write_DCL "show logical SYS$SYSDEVICE" $ call Write_DCL "show devices sys$sysdevice" $ call Write_DCL "show logical sys$sysroot" $ call Write_DCL - "directory/file_id/noheading/notrailing/width=filename=40 SYS$SYSDEVICE:[000000]VMS$COMMON.DIR, [SYS*]SYSCOMMON.DIR" $ call Write_DCL "mcr sysgen show /startup" $ define/user_mode/nolog SYSMANINI NL: $ call Write_DCL "mcr sysman startup show file /full" $ define/user_mode/nolog SYSMANINI NL: $ call Write_DCL "mcr sysman startup show options" $ define/user_mode/nolog SYSMANINI NL: $ call Write_DCL "mcr sysman IO show exclude" $! $! Boot Options list for Integrity $ if .not. vs$detailed then goto Boot_Topic_1 $ vs$boot_options_ok = 0 $ if f$getsyi("ARCH_NAME").nes."IA64" then goto Boot_Topic_1 $ if f$getsyi("VERSION").lts."V8.4-1H1" then goto Boot_Topic_1 $ if f$search("sys$manager:boot_options.com").eqs."" then goto Boot_Topic_1 $! Check boot_options.com menu did not change $ search sys$manager:boot_options.com "(2)","DISPLAY" /match=and /nowarnings/nooutput $ if $status.ne.1 then goto Boot_Topic_1 $ search sys$manager:boot_options.com "ans", ".eqs.", "EXIT" /match=and /nowarnings/nooutput $ if $status.ne.1 then goto Boot_Topic_1 $ vs$boot_options_ok = 1 ! to be used for Dump Device Options list $ create vs$boot_options.tmp $DECK 2 * EXIT $EOD $ call Write_DCL "@sys$manager:boot_options.com vs$boot_options.tmp" $ delete/nolog/noconfirm vs$boot_options.tmp; $Boot_Topic_1: $ if f$getsyi("ARCH_NAME").nes."x86_64" then goto Boot_Topic_2 $ call Create_Title "X86 memory disk: " $ call Write_DCL "show logical /full SYS$*_MD" $ if f$search("SYS$COMMON_MD:[SYS$LDR]SYS$MD.FID").nes."" $ then $ call Write_DCL "type SYS$COMMON_MD:[SYS$LDR]SYS$MD.FID" $ else $ call Create_Title "SYS$COMMON_MD:[SYS$LDR]SYS$MD.FID not found ! " $ endif $ call Write_DCL "show device /full SYS$SYSDEVICE_MD" $ call Write_DCL "directory/size/date/width=filename=40 SYS$LOADABLE_IMAGES:SYS$MD.DSK" $ if .not. vs$detailed then goto Boot_Topic_2 $ if f$search("SYS$LOADABLE_IMAGES:SYS$USER_MEMORYDISK.TEMPLATE").eqs."" then goto Boot_Topic_2 $ if f$search("SYS$LOADABLE_IMAGES:SYS$USER_MEMORYDISK.DAT").eqs."" then goto Boot_Topic_2 $ differences /output=NL: SYS$LOADABLE_IMAGES:SYS$USER_MEMORYDISK.TEMPLATE SYS$USER_MEMORYDISK.DAT $ if $status.eq.%X6C8013 then call Write_DCL "type/tail=100 SYS$LOADABLE_IMAGES:SYS$USER_MEMORYDISK.DAT" $Boot_Topic_2: $ call Create_Title "System disk index file fragmentation: " $ call Write_DCL - "pipe dump/header/blocks=c:0 sys$sysdevice:[000000]indexf.sys | search sys$pipe ""Map area words in use:""" $ call Write_DCL "pipe dump/header/blocks=c:0 sys$sysdevice:[000000]indexf.sys | search sys$pipe "" Count:""" $Boot_Topic_End: $!-------------------------------------------------------- $ if f$locate("lnm",vs$skip).ne.f$length(vs$skip) then goto Lnm_Topic_End $ call Create_Topic "lnm" "Logical names" $ call Write_DCL "show logical LNM$FILE_DEV /table=*" $ call Write_DCL "show logical" $Lnm_Topic_End: $!-------------------------------------------------------- $ if f$locate("timezone",vs$skip).ne.f$length(vs$skip) then goto Timezone_Topic_End $ call Create_Topic "timezone" "Time Zone" $ if f$type(type).nes."" ! do not call utc$time_setup if type is redefined $ then $ if f$edit(type,"upcase").nes."TYPE" $ then $ call Create_Title "Please use "" $ @sys$manager:utc$time_setup.com show """ $ goto Timezone_Topic_End $ endif $ endif $ pipe @sys$manager:utc$time_setup.com show | copy/nolog sys$pipe vs$dcl2.txt $ call Write_File "@sys$manager:utc$time_setup.com show" "vs$dcl2.txt" $ delete/nolog vs$dcl2.txt; $Timezone_Topic_End: $!------------------------------------------------------- $ if f$locate("shadow",vs$skip).ne.f$length(vs$skip) then goto Shadow_Topic_End $ call Create_Topic "shadow" "Shadowing" $ call Write_DCL "mcr sysgen show SHAD" $ call Write_DCL "show shadow /full" $ if f$device("*DSA*","DISK").nes."" then call Write_DCL "show devices /bitmap /full" $Shadow_Topic_End: !------------------------------------------------------ $ if f$locate("license",vs$skip).ne.f$length(vs$skip) then goto License_Topic_End $ call Create_Topic "license" "LMF" $ call Write_DCL "show license" $ call Write_DCL "show license /charge_table" $ call Write_DCL "show license /cluster/unit_requirements" $ call Write_DCL "show license /usage" $ call Write_DCL "show logical LMF$*" $ call Write_DCL "pipe license list/full | sear/wind=(0,1) sys$pipe Authorization:" $License_Topic_End: $!------------------------------------------------------ $ if f$locate("queman",vs$skip).ne.f$length(vs$skip) then goto Queman_Topic_End $ call Create_Topic "queman" "Queue Manager" $ call Write_DCL "show queue/manager/full" $ call Write_DCL "show queue/all_jobs/full" $Queman_Topic_End: $!------------------------------------------------------ $ if f$locate("acme",vs$skip).ne.f$length(vs$skip) then goto Acme_Topic_End $ call Create_Topic "acme" "ACME/LDAP" $ call Write_DCL "show server acme_server /full" $ if f$search("sys$system:LOGINOUT.EXE").nes."" then - call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:LOGINOUT.EXE" $ if f$search("sys$system:SETP0.EXE").nes."" then - call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:SETP0.EXE" $ if vs$detailed $ then $ if f$search("LDAPACME$INIT").nes."" then call Write_DCL "search LDAPACME$INIT bind_password,= /match=NAND" $ endif $Acme_Topic_End: $!------------------------------------------------------ $ if f$locate("decwindows",vs$skip).ne.f$length(vs$skip) then goto DECwindows_Topic_End $ call Create_Topic "decwindows" "DECwindows" $ if f$search("sys$update:decw$versions.com").nes."" $ then $ if f$trnlnm("SYS$SCRATCH").nes."" then call Write_DCL "@sys$update:decw$versions.com" $ call Write_DCL "show logical DECW$*" $ else $ call Create_Title "''vs$not_configured'" $ goto DECwindows_Topic_End $ endif $! $ if .not. vs$detailed then goto DECwindows_Topic_End $! $ call CheckAll [CDE$DEFAULTS.SYSTEM.BIN]DECW$LOGINOUT.EXE $ call CheckAll [CDE$DEFAULTS.SYSTEM.BIN]CDE$RESTARTLOGIN.EXE $ call CheckAll [CDE$DEFAULTS.SYSTEM.BIN]DT*.EXE $ call CheckAll [SYSLIB]DECW$TRANSPORT_COMMON.EXE $ call CheckAll [SYSLIB]DECW$TRANSPORT_LOCAL.EXE $ call CheckAll [SYSLIB]DECW$TRANSPORT_TCPIP.EXE $ call CheckAll [SYSLIB]DECW$TRANSPORT_DECNET.EXE $ call CheckAll [SYSLIB]DECW$TRANSPORT_LAT.EXE $ call CheckAll [SYSLIB]DECW$SECURITY.EXE $ call CheckAll [SYSLIB]DECW$SERVER_DDX_RADEON.EXE $ call CheckAll [SYSLIB]DECW$SERVER_DDX_XAA.EXE $ call CheckAll [SYSLIB]DECW$SERVER_DIX.EXE $ call CheckAll [SYSLIB]DECW$SERVER_DDX_FB.EXE $ call CheckAll [SYSLIB]DECW$SERVER_DRI.EXE $ call CheckAll [SYSLIB]DECW$SVEXT_GLX_SW.EXE $ call CheckAll [SYSLIB]DECW$DRM_PRIV.EXE $ call CheckAll [SYSLIB]DECW$MESA3DSHR_RADEON.EXE $ call CheckAll [SYSLIB]DECW$OPENGLUSHR_V11.EXE $ call CheckAll [SYSLIB]DECW$OPENGLUTSHR.EXE $ call CheckAll [SYSEXE]DECW$SERVER_MAIN.EXE $ call CheckAll [SYSEXE]DECW$*.EXE $ call CheckAll [SYSMGR]DECW$PRIVATE_SERVER_SETUP.COM; $ call CheckAll [SYSMGR]DECW$PRIVATE_APPS_SETUP.COM; $ call CheckAll [SYSMGR]DECW$*.DAT $ if f$search("SYS$MANAGER:DECW$SERVER_0_ERROR.LOG") .nes. "" then - call Write_DCL "type/tail=200 sys$manager:DECW$SERVER_0_ERROR.LOG" $goto DECwindows_topic_End $! $CheckAll: subroutine $ call ShowObject "''p1'" $ vs$extension = f$parse( p1,,, "TYPE" ) $ if vs$extension .eqs. ".EXE" then call ShowImageIdent "''p1'" $ call CheckSysSpecific "''p1'" $Exit $endsubroutine $! $ShowObject: subroutine $! $ vs$soext = f$parse( p1,,, "TYPE" ) $ if vs$soext .eqs. ".EXE" $ then $ call Write_DCL "product show object/full ''p1'" $ endif $Exit $endsubroutine $! $ShowImageIdent: subroutine $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) SYS$COMMON:''P1'" $Exit $endsubroutine $! $CheckSysSpecific: subroutine $ if f$search("SYS$SPECIFIC:''p1'") .nes. "" $ then $ call Write_DCL "directory/size/date/width=filename=40 SYS$SPECIFIC:''p1'" $ vs$extenc = f$parse( p1,,, "TYPE" ) $ if vs$extenc .eqs. ".COM" then call Write_DCL "type/nopage SYS$SPECIFIC:''p1'" $ endif $Exit $endsubroutine $! $DECwindows_Topic_End: $!------------------------------------------------------- $ if f$locate("sload",vs$skip).ne.f$length(vs$skip) then goto Sload_Topic_End $ call Create_Topic "sload" "System Load" $ call Write_DCL "show system" $ call Write_DCL "show system /multithread/full" $ call Write_DCL "pipe show users /node | search sys$pipe "Total number" $ call Write_DCL "pipe show users /cluster | search sys$pipe "Total number" $ call Write_DCL "show memory/slots" $ call Write_DCL "pipe write sys$output ""evaluate /nosymbol @pms$gl_proccntmax"" | analyze /system" $ call Write_DCL "set logins /interactive" $ call Write_SDA "show locks /summary" $ if vs$detailed then call Write_SDA "show resources /contention=all" $Sload_Topic_End: $!------------------------------------------------------- $ if f$locate("account",vs$skip).ne.f$length(vs$skip) then goto Account_Topic_End $ call Create_Topic "account" "Accounting/Audit" $ call Write_DCL "show logical /full ACCOUNTNG" $ call Write_DCL "show accounting" $ if .not. vs$detailed then goto Account_1 $ vs$accfile = f$trnlnm("ACCOUNTNG","lnm$System_Table") $ if vs$accfile .eqs. "" then vs$accfile = "SYS$MANAGER:ACCOUNTNG.DAT;" $ if f$search("''vs$accfile'").nes."" then call Write_DCL "directory /size=all/date/width=filename=40 ''vs$accfile'" $ if f$search("''vs$accfile'").nes."" then call Write_DCL - " pipe dump/header/block=c:0 ''vs$accfile' | search sys$pipe ""Map area words in use:""" $Account_1: $ call Write_DCL "show audit/all" $ if vs$detailed then call Write_DCL "show intrusion" $Account_Topic_End: $!------------------------------------------------------- $ if f$locate("opcom",vs$skip).ne.f$length(vs$skip) then goto Opcom_End $ call Create_Topic "opcom" "OPCOM" $ call Write_DCL "show logical OPC$*" $ if .not. vs$detailed then goto Opcom_end $ if f$trnlnm("OPC$LOGFILE_NAME","lnm$System_Table").nes."" $ then $ if f$search("OPC$LOGFILE_NAME").nes."" then call Write_DCL "type/tail=200 OPC$LOGFILE_NAME" $ else $ if f$search("SYS$MANAGER:OPERATOR.LOG").nes."" then call Write_DCL "type/tail=200 SYS$MANAGER:OPERATOR.LOG" $ endif $Opcom_End: $!------------------------------------------------------- $ if f$locate("errlog",vs$skip).ne.f$length(vs$skip) then goto Errlog_Topic_End $ call Create_Topic "errlog" "ErrorLog" $ call Write_DCL "show error" $ call Write_DCL "analyze/error/elv translate/summary" $Errlog_Topic_End: $!------------------------------------------------------- $ if f$locate("dump",vs$skip).ne.f$length(vs$skip) then goto Dump_Topic_End $ call Create_Topic "dump" "Crash information" $ call Write_DCL "mcr sysgen show dump" $ call Write_DCL "mcr sysgen show BUGCHECK" $ if (f$getsyi("DUMPSTYLE") .AND. 4) .NE. 4 $ then $ if f$search("sys$system:sysdump.dmp").nes."" $ then $ call write_DCL "directory/size=all/date/width=filename=40 sys$system:sysdump.dmp" $ call Write_DCL "dump/header /block=count=0 sys$system:sysdump.dmp" $ endif $ else $ call Create_Title "Dumping Out of System Disk (DOSD) is used" $ call Write_DCL "show logical CLUE$DOSD_DEVICE" $ endif $ if f$search("sys$errorlog:clue$history.dat","exists").nes."" $ then $ call Write_DCL "type sys$errorlog:clue$history.dat" $ endif $ call Write_SDA "show executive /all" $! Dump Device Options list for Integrity $! $ if .not. vs$detailed then goto Dump_Topic_End $ if f$getsyi("ARCH_NAME").nes."IA64" then goto Dump_Topic_End $ if .not. vs$boot_options_ok then goto Dump_Topic_End $ create vs$dump_options.tmp $DECK D 2 * EXIT $EOD $ call Write_DCL "@sys$manager:boot_options.com vs$dump_options.tmp" $ delete/nolog/noconfirm vs$dump_options.tmp; $Dump_Topic_End: $!------------------------------------------------------- $ if f$locate("avail",vs$skip).ne.f$length(vs$skip) then goto Avail_Topic_End $ call Create_Topic "avail" "Availability Manager" $ if f$getdvi("RMA0:","exists").eqs."FALSE" $ then $ call Create_Title "''vs$not_configured'" $ else $ call Write_DCL "show devices /full RMA0:" $ if f$search("SYS$STARTUP:AMDS$STARTUP.COM").nes."" $ then $ call Write_DCL "@SYS$STARTUP:AMDS$STARTUP.COM STATUS" $ endif $ endif $Avail_Topic_End: $ gosub End_Chapter $!-------------------- End of SYSTEM Chapter -------------------------------------------- $!-------------------- Hardware Chapter ------------------------------------------------ $ call Create_Chapter "hardware" "Hardware" $ if f$locate("clueconf",vs$skip).ne.f$length(vs$skip) then goto Clueconf_Topic_End $ call Create_Topic "clueconf" "Configuration" $ call Write_SDA "clue configuration" $ if vs$detailed then call Write_DCL "show devices" $Clueconf_Topic_End: $ if f$locate("fibre",vs$skip).ne.f$length(vs$skip) then goto Fibre_Topic_End $ call Create_Topic "fibre" "Fibre Channel" $ call Write_DCL "show devices FG /full" $ call Write_DCL "pipe show devices dg/full | search sys$pipe ""Disk $1$DGA"","" PATH """ $ ascii=65 $FGLoop: $ Letter[0,8]=ascii $ if f$getdvi("FG''Letter'0","exists").eqs."FALSE" then goto FGLoopEnd $ call Write_SDA "FC show device FG''Letter'0:" $ ascii=ascii+1 $ if Letter.eqs."Z" then goto FGLoopEnd $ goto FGloop $FGLoopEnd: $ if f$getdvi("FGA0","exists").eqs."FALSE" then goto FCEnd $ call Write_SDA "FC show stdt/all" $ call Write_SDA "FC show wtid" $ if .not. vs$detailed then goto FCEnd $ call Write_SDA "FC show NS" $ call Write_SDA "FC show NAME_LIST" $ call Write_SDA "FC performance" $FCEnd: $ if f$getsyi("version").ges."V8.4-2" then call Write_DCL "show path /device/full" $ call Write_DCL "show devices /multipath" $ if vs$detailed then call Write_DCL "mcr sys$etc:fibre_scan" $Fibre_Topic_End: $!------------------------------------------------ $ if f$locate("disk_cont",vs$skip).ne.f$length(vs$skip) then goto Disk_cont_Topic_End $ call Create_Topic "disk_cont" "Disk controllers" $ call Write_DCL "show devices pk /full" $ if vs$detailed then call Write_SDA "clue SCSI /summary" $Disk_cont_Topic_End: $!------------------------------------------------ $ if f$locate("disks",vs$skip).ne.f$length(vs$skip) then goto Disks_Topic_End $ call Create_Topic "disks" "Disks" $ call Write_DCL "show devices d" $ if vs$detailed then call Write_DCL "show devices d /full" $ call Write_DCL "show RMS_DEFAULT" $Disks_Topic_End: $!------------------------------------------------ $ if f$locate("mscp_dev",vs$skip).ne.f$length(vs$skip) then goto Mscp_dev_Topic_End $ call Create_Topic "mscp_dev" "Served disks & tapes" $ call Write_DCL "pipe (set process /units=bytes ; show devices /served /all)" $Mscp_dev_Topic_End: $!------------------------------------------------ $ if f$locate("tapes",vs$skip).ne.f$length(vs$skip) then goto Tapes_Topic_End $ call Create_Topic "tapes" "Tapes" $ vs$devnam = f$device("") $TapeLoop: $ vs$devnam = f$device("*","TAPE") $ if vs$devnam .eqs. "" then goto Tapes_Topic_End $ call Write_DCL "show devices ''vs$devnam' /full" $goto TapeLoop $Tapes_Topic_End: $!------------------------------------------------ $ if f$locate("nics",vs$skip).ne.f$length(vs$skip) then goto Nics_Topic_End $ call Create_Topic "nics" "NICs" $ call Write_DCL "mcr lancp show ACP" $ call Write_DCL "mcr lancp show configuration" $ call Write_DCL "mcr lancp show configuration /users" $ if f$getsyi("arch_name").eqs."x86_64" then call Write_DCL "mcr lancp show configuration/status/bandwidth" $ call Write_DCL "mcr lancp show device /characteristics" $ call Write_DCL "mcr lancp show log" $ call Write_DCL "mcr lancp show device /counters" $ call Write_DCL "mcr lancp show device /messages" $ call Write_DCL "mcr lancp show device /internal_counters /debug" $ if vs$detailed then call Write_DCL "mcr lancp show device /trace" $ if f$search("SYS$SYSTEM:LAN$DEVICE_DATABASE.DAT").nes."" then call Write_DCL "mcr lancp list device/characteristics" $ if vs$detailed $ then call Write_SDA "show lan /full" $ else $ call Write_SDA "show lan /counters" $ call Write_SDA "show lan /errors" $ endif $Nics_Topic_End: $!------------------------------------------------ $ if f$locate("usb",vs$skip).ne.f$length(vs$skip) then goto USB_End $ call Create_Topic "usb" "USB" $ call Write_DCL "ucm show device /full" $ call Write_DCL "show devices dna /full" $ call Write_DCL "ucm show device /permanent/full" $ call Write_DCL "ucm show auto" $ if .not. vs$detailed then goto USB_End $ if f$search("SYS$SYSTEM:USB$UCM_DEVICES.DAT").nes."" then call Write_DCL "type SYS$SYSTEM:USB$UCM_DEVICES.DAT" $ call Write_DCL "ucm show events /since=boot" $USB_End: $ gosub End_Chapter $!-------------------- End of HARDWARE Chapter -------------------------------------------- $!-------------------- Network Chapter --------------------------------------------------- $ call Create_Chapter "network" "Networking" $!------------------------------------------------- $ call Create_Topic "netsum" "Summary" $ call Write_DCL "show network" $!------------------------------------------------- $ if f$locate("vsitcpip",vs$skip).ne.f$length(vs$skip) then goto VSItcpip_end $ pipe ip show /version > nl: 2>nl: $ if .not. $status then goto VSItcpip_end $ call Create_Topic "vsitcpip" "VSI TCP/IP" $ call Write_DCL "ip show/version" $ call Write_DCL "product show history vsi_tcpip" $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) ip$:*ssh*.exe" $ define/user sys$output vs$ip.txt $ ip configure /server show show /full $ call Write_File "ip configure/server outputs" "vs$ip.txt" $ delete /nolog vs$ip.txt; $ call Create_Title "VSI TCP/IP logical names:" $ call Write_DCL "show logical /system ip$*" $ call Write_DCL "show logical /system *ssh*" $! $VSItcpip_end: $!------------------------------------------------- $ if f$locate("hpetcpip",vs$skip).ne.f$length(vs$skip) then goto HPEtcpip_End $ call Create_Topic "hpetcpip" "TCP/IP Services" $ pipe tcpip show version > nl: 2> nl: $ if .not. $status $ then $ call Create_Title "''vs$not_configured'" $ goto hpetcpip_end $ endif $ call Create_Title "TCP/IP images:" $ call Write_DCL "tcpip show version/all" $ SYSCONFIG = "$SYS$SYSTEM:TCPIP$SYSCONFIG.EXE" $ NTPDC = "$SYS$SYSTEM:TCPIP$NTPDC.EXE" $ NETSTAT = "$SYS$SYSTEM:TCPIP$NETSTAT.EXE" $ IFCONFIG = "$SYS$SYSTEM:TCPIP$IFCONFIG.EXE" $! $ call Create_Title "Interface(s): " $ call Write_DCL "tcpip show interface" $ call Write_DCL "ifconfig -av" $ if vs$detailed $ then $ call Create_Title "Active connections: " $ call Write_DCL "netstat -an" $ call Write_DCL "tcpip show device_socket" $ endif $ call Create_Title "Local host database:" $ call Write_DCL "tcpip show host/local" $ call Create_Title "Name resolution: " $ call Write_DCL "tcpip show name_service" $ call Create_Title "Communication & proxies: " $ call Write_DCL "tcpip show communication" $ call Write_DCL "tcpip show proxy" $ call Create_Title "Routing information:" $ call Write_DCL "netstat -rn" $ call Write_DCL "tcpip show route" $ call Create_Title "TCP/IP protocols information:" $ call Write_DCL "tcpip show protocol /parameters" $ call Write_DCL "tcpip show protocol" $ call Create_Title "TCP/IP services:" $ call Write_DCL "tcpip show service /full" $ call Create_Title "Network Time Protocol:" $ call Write_DCL "ntpdc -pn" $ call Create_Title "Network File System:" $ call Write_DCL "tcpip show map" $ call Write_DCL "tcpip show export" $ call Write_DCL "tcpip show mount /full" $! $ call Create_Title "SNMP:" $ call Write_DCL "tcpip show configuration SNMP /full" $! $ call Create_Title "SMTP:" $ call Write_DCL "tcpip show configuration SMTP /full" $ if vs$detailed $ then $ if f$search("TCPIP$SMTP_COMMON:TCPIP$SMTP.CONF").nes."" then call Write_DCL "type TCPIP$SMTP_COMMON:TCPIP$SMTP.CONF" $ endif $! $ if .not. vs$detailed then goto hpetcpip_1 $ call Create_Title "SSH:" $ if f$search("SYS$SYSDEVICE:[TCPIP$SSH.SSH2]SSH2_CONFIG.").nes."" $ then $ call Write_DCL "type SYS$SYSDEVICE:[TCPIP$SSH.SSH2]SSH2_CONFIG." $ else $ call Create_Title "SYS$SYSDEVICE:[TCPIP$SSH.SSH2]SSH2_CONFIG. not found" $ endif $ if f$search("SYS$SYSDEVICE:[TCPIP$SSH.SSH2]SSHD2_CONFIG.").nes."" $ then $ call Write_DCL "type SYS$SYSDEVICE:[TCPIP$SSH.SSH2]SSHD2_CONFIG." $ else $ call Create_Title "SYS$SYSDEVICE:[TCPIP$SSH.SSH2]SSHD2_CONFIG. not found" $ endif $HPEtcpip_1: $ if vs$detailed $ then $ call Create_Title "Sysconfig parameters: " $ call Write_DCL "sysconfig -q inet" $ call Write_DCL "sysconfig -q iptunnel" $ call Write_DCL "sysconfig -q cm" $ call Write_DCL "sysconfig -q ipv6" $ call Write_DCL "sysconfig -q net" $ call Write_DCL "sysconfig -q snmpinfo" $ call Write_DCL "sysconfig -q socket" $ call Write_DCL "sysconfig -q sctp" $ call Write_DCL "sysconfig -q kvci" $ call Write_DCL "sysconfig -q sda" $ call Write_DCL "sysconfig -q proxy" $ endif $! $ call Create_Title "TCP/IP Services logical names:" $ call Write_DCL "show logical /system TCPIP$*" $ call Write_DCL "show logical /system UCX$*" $HPEtcpip_end: $! $!------------------------------------------------- $ if f$locate("openssh",vs$skip).ne.f$length(vs$skip) then goto OpenSSH_End $ call Create_Topic "openssh" "OpenSSH" $ if f$trnlnm("SSH$ROOT","lnm$System_Table") .eqs. "" $ then $ call Create_Title "SSH$ROOT is not defined" $ goto OpenSSH_End $ endif $ call Write_DCL "product show history /full OpenSSH" $ call Write_DCL "show logical /full SSH$ROOT" $ call Write_DCL "@ssh$root:[bin]ssh$version.com" $ if .not. vs$detailed then goto OpenSSH_End $ if f$search("SSH$ROOT:[ETC]SSH_CONFIG.").nes. "" then call Write_DCL "type SSH$ROOT:[ETC]SSH_CONFIG." $ if f$search("SSH$ROOT:[ETC]SSHD_CONFIG.").nes."" then call Write_DCL "type SSH$ROOT:[ETC]SSHD_CONFIG." $ call Create_Title "Supported Ciphers, Key-exchange, Mac and Kex Algorithms for this OpenSSH version:" $ ssh = "$SSH$ROOT:[BIN.''vs$arch_type']SSH$SSH.exe" $ if f$search("''ssh'" - "$").eqs."" then goto OpenSSH_End $ call Write_DCL "ssh ""-Q"" ""help""" $ pipe ssh "-Q" "help" > vs$ssh.tmp $ open/read/error=Hpetcpip2 vs$ossh_file vs$ssh.tmp $OpenSSH_loop: $ read/end_of_file=OpenSSH_close/error=OpenSSH_close vs$ossh_file vs$line $ call Write_DCL "ssh ""-Q"" ""''vs$line'""" $ goto Openssh_loop $OpenSSH_close: $ close vs$ossh_file $ if f$search("vs$ssh.tmp").nes."" then delete/nolog/noconfirm vs$ssh.tmp; $OpenSSH_End: $!------------------------------------------------- $ if f$locate("decnet",vs$skip).ne.f$length(vs$skip) then goto Decnet_End $ call Create_Topic "decnet" "DECnet" $ vs$phaseiv="NO" $ vs$phasev = (f$extract(2,2,f$getsyi("DECNET_VERSION")).eqs."05") $ if .not. vs$phasev $ then $ if (f$extract(2,2,f$getsyi("DECNET_VERSION")).eqs."04") $ then $ vs$phaseiv = "YES" $ vs$temp="DECnet Phase IV is installed on this node." $ endif $ else $ vs$temp="DECnet-Plus is installed on this node." $ endif $! $ if .not. vs$phasev .and. .not. vs$phaseiv $ then $ call Create_Title "''vs$not_configured'" $ goto Decnet_End $ endif $! $ call Create_Title "''vs$temp'" $ if .not. f$getdvi("_NET0","EXISTS") $ then $ call Create_Title "DECnet is not started" $ goto Decnet_End $ endif $! $ if vs$phasev then goto DECnet_PhaseV $Decnet_PhaseIV: $ call Write_DCL "pipe mcr ncp show executor characteristics | search sys$pipe password /match=nand" $ call Write_DCL "mcr ncp show known circuits characteristics" $ call Write_DCL "mcr ncp show known lines characteristics" $ call Write_DCL "mcr ncp show active circuits" $ call Write_DCL "pipe mcr ncp show known nodes characteristics | search sys$pipe password /match=nand" $ call Write_DCL "pipe mcr ncp show known objects characteristics | search sys$pipe password /match=nand" $ call Write_DCL "mcr ncp show known links characteristics" $ goto Decnet_End $! $Decnet_PhaseV: $ call Write_DCL "mcr ncl show implementation" $ call Write_DCL "mcr ncl show node 0 all" $ call Write_DCL "mcr ncl show nsp all" $ call Write_DCL "mcr ncl show osi transport all" $ call Write_DCL "mcr ncl show session control all" $ call Write_DCL "mcr ncl show session control application * all" $ call Write_DCL "mcr ncl show routing all" $ call Write_DCL "mcr ncl show alias all" $ call Write_DCL "mcr ncl show alias port * all" $ call Write_DCL "mcr ncl show dtss all" $ call Write_DCL "mcr ncl show csma-cd all" $ call Write_DCL "mcr ncl show csma-cd station * all status" $ call Write_DCL "mcr ncl show routing circuit * all characteristics" $Decnet_End: $!------------------------------------------------------ $ if f$locate("lat",vs$skip).ne.f$length(vs$skip) then goto Lat_End $ call Create_Topic "lat" "LAT" $ if .not. F$getdvi("LTA0","EXISTS") $ then $ call Create_Title "''vs$not_configured'" $ goto Lat_End $ endif $ call Write_DCL "mcr latcp show node" $ call Write_DCL "mcr latcp show service" $ call Write_DCL "mcr latcp show link /full" $ call Write_DCL "mcr latcp show port /application" $ call Write_DCL "mcr latcp show port /dedicated" $Lat_End: $!------------------------------------------------------- $ if f$locate("mop",vs$skip).ne.f$length(vs$skip) then goto Mop_Topic_End $ call Create_Topic "mop" "MOP" $ call Write_DCL "show logical MOM$LOAD" $ call Write_DCL "show logical LAN$DLL" $ call Write_DCL "mcr lancp show dll" $ call Write_DCL "mcr lancp show node/all" $Mop_Topic_End: $!------------------------------------------------------- $ if f$locate("samba",vs$skip).ne.f$length(vs$skip) then goto Samba_End $ call Create_Topic "samba" "Samba" $ if f$trnlnm("SAMBA$ROOT").eqs."" $ then $ call Create_Title "SAMBA$ROOT is not defined" $ goto Samba_End $ endif $ call Write_DCL "product show history SAMBA /full" $ pipe product show product SAMBA | search sys$pipe "V1."/nooutput/nowarning $ if $status .nes. "%X10000001" then goto Samba_1 $ if f$search("samba$root:[bin.''vs$arch_type']samba$shr.exe") .nes. "" then - call Write_DCL "analyze/image/select=(identification,build_identification,link_time) samba$root:[bin.''vs$arch_type']samba$shr" $Samba_1: $ call Write_DCL "show logical /full/system SAMBA$*" $ $ if f$search("samba$root:[bin]samba$library_shares.com") .nes. "" then - @samba$root:[bin]samba$library_shares.com $ if f$search("samba$root:[bin.''vs$arch_type']samba$testparm.exe").nes. "" then - call Write_DCL "mcr samba$root:[bin.''vs$arch_type']samba$testparm.exe -s" $Samba_End: $!------------------------------------------------------- $ if f$locate("apache",vs$skip).ne.f$length(vs$skip) then goto Apache_End $ call Create_Topic "apache" "Apache Web Server" $ if f$trnlnm("APACHE$ROOT").eqs."" $ then $ call Create_Title "APACHE$ROOT is not defined" $ goto Apache_End $ endif $ call Write_DCL "product show history CSWS* /full" $! $ call Create_Title "Configuration files:" $ if f$search("APACHE$ROOT:[000000]APACHE$CONFIG.DAT") .nes."" then - call Write_DCL "type APACHE$ROOT:[000000]APACHE$CONFIG.DAT" $ if f$search("TOMCAT$ROOT:[000000]LOGIN.COM") .nes."" then - call Write_DCL "type TOMCAT$ROOT:[000000]LOGIN.COM" $ if f$search("TOMCAT$ROOT:[CONF]*.XML") .nes."" then - call Write_DCL "type TOMCAT$ROOT:[CONF]*.XML" $ if f$search("SYS$STARTUP:TOMCAT$ARGS_LOCAL.DAT") .nes."" then - call Write_DCL "type SYS$STARTUP:TOMCAT$ARGS_LOCAL.DAT" $ if f$search("SYS$STARTUP:TOMCAT$ARGS.DAT") .nes."" then - call Write_DCL "type SYS$STARTUP:TOMCAT$ARGS.DAT" $ if f$search("SYS$STARTUP:TOMCAT$DEFS_LOCAL.COM") .nes."" then - call Write_DCL "type SYS$STARTUP:TOMCAT$DEFS_LOCAL.COM" $ if f$search("SYS$MANAGER:TOMCAT$DEFINE_LOGICALS.COM") .nes."" then - call Write_DCL "type SYS$MANAGER:TOMCAT$DEFINE_LOGICALS.COM" $! $ if .not. vs$detailed then goto Apache_End $ call Create_Title "Apache log files:" $ if f$search("APACHE$ROOT:[000000]APACHE$SWS.LOG") .nes."" then - call Write_DCL "type/tail=200 APACHE$ROOT:[000000]APACHE$SWS.LOG" $ if f$search("APACHE$ROOT:[LOGS]ERROR_LOG.") .nes."" then - call Write_DCL "type/tail=200 APACHE$ROOT:[LOGS]ERROR_LOG." $ if f$search("APACHE$ROOT:[LOGS]ACCESS_LOG.") .nes."" then - call Write_DCL "type/tail=200 APACHE$ROOT:[LOGS]ACCESS_LOG." $ if f$search("APACHE$ROOT:[LOGS]SSL*_LOG.") .nes."" then - call Write_DCL "type/tail=200 APACHE$ROOT:[LOGS]SSL*_LOG." $ if f$search("APACHE$ROOT:[000000]APACHE$JAKARTA_SERVER_OUTPUT.LOG") .nes."" then - call Write_DCL "type/tail=200 APACHE$ROOT:[000000]APACHE$JAKARTA_SERVER_OUTPUT.LOG" $ if f$search("TOMCAT$ROOT:[LOGS]TOMCAT.LOG") .nes."" then - call Write_DCL "type/tail=200 TOMCAT$ROOT:[LOGS]TOMCAT.LOG" $Apache_End: $ gosub End_Chapter $!-------------------- End of Network Chapter ------------------------------------- $!--------------------Products Chapter ------------------------------------------- $ call Create_Chapter "products" "Products" $!------------------------------------------------------- $ if f$locate("prodlist",vs$skip).ne.f$length(vs$skip) then goto Prodlist_Topic_End $ call Create_Topic "prodlist" "Products list" $ call Write_DCL "product show product /full" $ call Write_DCL "product show history /full" $ if f$search("sys$update:vmsinstal.history").nes."" then call Write_DCL "type sys$update:vmsinstal.history" $ call Write_DCL "directory /date/width=filename=40 SYS$HELP:*.release_notes;" $! Broadcom products $ if f$search("sys$startup:caregistry$listproducts.com").nes."" $ then $ call Create_Title "Former Broadcom products: " $ call Write_DCL "@sys$startup:caregistry$listproducts" $ endif $!CONNX product: $ if f$search("sys$sysroot:[000000]CONNX.DIR").nes."" then - call Write_DCL "directory /date/size=all/width=filename=40 sys$sysroot:[CONNX]*.*;" $!------------------------------------------------------- $ call Create_Topic "compilers" "Compilers" $ call Create_Title "c :" $ pipe product show product c > nl: 2>nl: $ if $status.eq.1 $ then $ call Write_DCL "cc /version" $ if f$search("sys$system:decc$show_versions.com").nes."" then - call Write_DCL "@sys$system:decc$show_versions.com" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "c++ :" $ pipe product show product cxx > nl: 2> nl: $ if $status.eq.1 $ then $ call Write_DCL "cxx /version" $ else $ call Create_Title "''vs$not_configured'" $ endif $ if f$search("vs$errors.log;2").nes."" then delete/nolog vs$errors.log;2 $! $ call Create_Title "COBOL:" $ pipe product show product COBOL > nl: 2> nl: $ if $status.eq.1 $ then $ define/nolog sys$error nl: $ call Write_DCL "COBOL /version" $ define/nolog sys$error vs$errors.log $ call write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:cobol.exe" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "FORTRAN:" $ pipe product show product FORTRAN > nl: 2> nl: $ if $status.eq.1 $ then $ call Write_DCL "FORTRAN /version" $ if f$search("sys$system:fort$main.exe").nes."" then - call write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:fort$main.exe" $ if f$search("sys$system:f90$main.exe").nes."" then - call write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:f90$main.exe" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "PASCAL:" $ pipe product show product PASCAL > nl: 2> nl: $ if $status.eq.1 $ then $ call Write_DCL "PASCAL /version" $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:pascal.exe" $ else $ call Create_Title "''vs$not_configured'" $ endif $Prodlist_Topic_End: $!----------------------------------------------------- $ if f$locate("acms",vs$skip).ne.f$length(vs$skip) then goto Acms_Topic_End $ call Create_Topic "acms" "ACMS" $ call Create_Title "ACMS:" $ if f$search("sys$system:acmsacc.exe") .nes. "" $ then $ call Write_DCL "ACMS /show system" $ call Write_DCL "ACMS /show application" $ call create_title "ACMSACC ident and link date:" $ call write_dcl "analyze/image sys$system:acmsacc/select=(identification,build_identification,link_time)" $ call create_title "Check for ACMS$DIRECTORY logical name" $ call write_dcl "show logical acms$directory" $ call create_title "ACMSGEN parameters:" $ call write_ACMSGEN $ call create_title "Check for ACMSPROXY database" $ call write_dcl "directory /date/width=filename=40 sys$system:acmsproxy.dat" $ call write_dcl "show logical/full acmsproxy" $ call create_title "Check for ACMSUDF, ACMSDDF and ACMSAAF files" $ call write_dcl "show logical acmsudf" $ call write_dcl "show logical acmsddf" $ call write_dcl "show logical acmsaaf" $ else $ call Create_Title "''vs$not_configured'" $ endif $Acms_Topic_End: $!----------------------------------------------------- $ if f$locate("rdb",vs$skip).ne.f$length(vs$skip) then goto Rdb_End $ call Create_Topic "rdb" "RDB" $ call Create_Title "RDB:" $ pipe rmu/show system > nl: 2> nl: $ if $status .eq. %X38090 .or. $status .eq "%X38008" ! %DCL-W-IVVERB or ABVERB $ then $ call Create_Title "RMU command not defined" $ goto RDB_End $ endif $ call Write_DCL "rmu/show system" $ call Write_DCL "rmu/show logical_names" $Rdb_End: $!------------------------------------------------------ $ if f$locate("decset",vs$skip).ne.f$length(vs$skip) then goto Decset_Topic_End $ call Create_Topic "decset" "DECset" $! $ call Create_Title "CMS (Code Management System):" $ if f$search("sys$system:cms.exe").nes."" $ then $ call Write_DCL "cms show version" $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:CMS" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "MMS (Module Management System):" $ if f$search("sys$system:mms.exe").nes."" $ then $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:MMS" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "LSE (Language-Sensitive Editor):" $ if f$search("sys$system:lsedit.exe").nes."" $ then $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:LSEDIT" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "DTM (Digital Test Manager):" $ if f$search("sys$system:dtm.exe").nes."" $ then $ call Write_DCL "dtm show version" $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:DTM" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "PCA (Performance Coverage Analyzer):" $ if f$search("sys$system:pca$analyzer.exe").nes."" $ then $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:PCA$ANALYZER" $ else $ call Create_Title "''vs$not_configured'" $ endif $! $ call Create_Title "SCA (Source Code Analyzer):" $ if f$search("sys$system:sca$main.exe").nes."" $ then $ call Write_DCL "sca show version" $ call Write_DCL "analyze/image/select=(identification,build_identification,link_time) sys$system:SCA$MAIN" $ else $ call Create_Title "''vs$not_configured'" $ endif $Decset_Topic_End: $!------------------------------------------------------ $ if f$locate("webui",vs$skip).ne.f$length(vs$skip) then goto WebUI_End $ call Create_Topic "webui" "WebUI" $ if f$trnlnm("civetweb$root","lnm$System_Table") .eqs. "" $ then $ call Create_Title "CIVETWEB$ROOT is not defined" $ goto WebUI_End $ endif $ call Write_DCL "product show product WEBUI,CIVETWEB /full" $ call Write_DCL "show logical/full civetweb$*" $ if f$search("civetweb$root:[conf]*.conf").nes."" then call Write_DCL "type civetweb$root:[conf]*.conf;" $ if f$search("civetweb$root:[000000]login.com").nes."" then call Write_DCL "type civetweb$root:[000000]login.com;" $ if f$search("civetweb$root:[logs]*.log").nes."" then call Write_DCL "type/tail=100 civetweb$root:[logs]*.log;" $WebUI_End: $!------------------------------------------------------ $! Miscellaneous *** must be *** the last topic of all $! $ deassign sys$error $ call Create_Topic "misc" "Miscellaneous" $ call Write_File "vsi$support error messages : (some are expected)" "vs$errors.log" $ call Create_Title "Report made by vsi$support version ''vs$version'" $ vs$username = f$edit(f$getjpi("","USERNAME"),"TRIM") $ vs$base_prio= f$getjpi("","PRIB") $ call Create_Title "Username ''vs$username' running at base priority ''vs$base_prio'" $ if vs$not_priv.nes."" then call Create_Title "''vs$not_priv'" $ end_time = f$time() $ vs$elapsed_time = f$delta_time(start_time,end_time) $ call Create_Title "Elapsed Time: ''vs$elapsed_time'" $ delete/nolog vs$errors.log; $ gosub End_Chapter $ $!-------------------- End of Products Chapter ----------------------------------------- $! end processing $End_Processing: $ if vs$html $ then $ append sys$input vs$header.html $DECK $EOD $ endif $! $ vs$temp = f$time() $ vs$temp = f$extract(0,11,vs$temp)+"_"+f$extract(12,5,vs$temp) - "-" - "-" -":" $ if f$extract(0,1,vs$temp).eqs." " then vs$temp = "0" + vs$temp - " " $ if vs$html $ then $ append vs$body.html vs$header.html $ delete/nolog vs$body.html; $ rename/nolog vs$header.html [-]vs$report_'f$getsyi("nodename")'_'vs$temp' $ endif $ if vs$text $ then $ append vs$body.txt vs$header.txt $ delete/nolog vs$body.txt; $ rename/nolog vs$header.txt [-]vs$report_'f$getsyi("nodename")_'vs$temp' $ endif $ GOTO Main_Exit $! BEGIN: VSI Support Standard DCL Script End $! $Abort_Script: $!------------ $ say "Script abnormally exiting." $ GOTO Restore_Invoker_Context $! $Control_Y_Handler: $!---------------- $ say "Control Y detected, exiting." $ GOTO Restore_Invoker_Context $! $Main_Exit: $!-------- $! return invoker to the correct environment $Restore_Invoker_Context: $!----------------------- $ set default 'save_dir' $ set protection=o=rwed 'vs$work_dir'.dir $ if f$search("[.''vs$work_dir']vs$*.*") .nes. "" then delete /nolog [.'vs$work_dir']vs$*.*;* $ delete /nolog 'vs$work_dir'.dir; $ if f$type(vs$Cur_Chapter_href).nes."" then delete/symbol/global vs$Cur_Chapter_href $ if f$type(vs$Cur_Chapter_Name).nes."" then delete/symbol/global vs$Cur_Chapter_Name $ if save_privs .NES. "" then got_privs=f$setprv("''save_privs'") $ set message 'save_msg' $ if save_on .nes. "NONE" then set on $ say "Elapsed Time: ''vs$elapsed_time'" $ say "" $ say "Please see :" $ directory /since/width=filename=40 vs$report_'f$getsyi("nodename")'_*.html; , .txt; $ say "" $ say "Some firewalls block .HTML files. Before mailing or uploading the report" $ say "to an Internet file sharing location, it is highly recommended to" $ say "rename it with a .HTMTXT extension and then ZIP it." $ say "" $! $! exit 1 + 0*'f$ verify(save_verify) $! END: VSI Support Standard DCL Script End $Exit 1 $!--------------------- End main -------------------------------------------------------------- $! $!--------------------- Subroutines ------------------------------------------------------------ $End_Chapter: $ if .not. vs$html then goto End_Chapter_End $ append sys$input vs$header.html $DECK $EOD $! $End_Chapter_End: $Return $!-------------------------------------------------------------------------------------------------- $Exit $! $Init_Proc: $ vs$work_dir="VS$''f$unique()'" $ if .not. $status $ then $ say "f$unique() does not exist on this version of OpenVMS, ignore error messages" $ vs$work_dir="VS$''f$getjpi("","PID")'''F$CVTIME(,,"SECONDOFYEAR")'" $ if .not.$status then vs$work_dir="VS$" + f$element(1," ",f$time()) -":"-":"-"." $ endif $ if vs$verbose then say " ... Temporary work directory: ", "[.''vs$work_dir']" $ create /directory [.'vs$work_dir'] $ set default [.'vs$work_dir'] $ if vs$html $ then $ create/fdl=sys$input vs$header.html $DECK Record Format Stream_LF $EOD $ gosub Write_HTML_Header $ create/fdl=sys$input vs$body.html $DECK Record Format Stream_LF $EOD $ endif $! $ if vs$text $ then $ create/fdl=sys$input vs$header.txt $DECK Record Format Stream_LF $EOD $ gosub Write_Text_Header $ create/fdl=sys$input vs$body.txt $DECK Record Format Stream_LF $EOD $! $ open /append vs$out vs$body.txt $ write vs$out " " $ write vs$out "===============================================================================" $ write vs$out " " $ close vs$out $ endif $return ! from Init_Proc $! $!-------------------------------------------------------------------------------------------------- $Write_HTML_Header: $ append sys$input vs$header.html $DECK



$EOD $ vs$temp1="" $ if vs$detailed then vs$temp1 = " (detailed report) $ vs$temp= " Configuration of node "+f$getsyi("scsnode")+ "OpenVMS " + f$getsyi("arch_name")+" "+ - f$getsyi("version")+" on "+f$time() + vs$temp1 $ call Create_Title "''vs$temp'" "Header" "HTML_ONLY" $ append sys$input vs$header.html $DECK

Top

    $EOD $ return ! from Write_HTML_Header $! $!-------------------------------------------------------------------------------------------------- $Write_Text_Header: $ append sys$input vs$header.txt $DECK =============================================================================== $EOD $! $ open/append vs$file vs$header.txt $ vs$temp1 = "" $ if vs$detailed then vs$temp1 = " (detailed report) $ vs$temp=" Configuration of node "+f$getsyi("scsnode")+ "OpenVMS " + f$getsyi("arch_name")+" "+ - f$getsyi("version")+" on "+f$time() + vs$temp1 $ write vs$file vs$temp $ write vs$file vs$spaces $ close vs$file $ return ! from Write_Text_Header $! $!----------------------------------------------------------------------------------------------------- $ Create_Chapter: SUBROUTINE $ vs$Cur_Chapter_href == P1 $ vs$Cur_Chapter_Name == P2 $ set noon $ say " Gathering ''P2' data " $ if .not. vs$html then goto Create_Chapter_Text $ append sys$input vs$header.html $DECK

$EOD $ open /append vs$h vs$header.html $ vs$rec=" " $ write vs$h vs$rec $ write vs$h " " $ write vs$h " " $ write vs$h " ''vs$Cur_Chapter_Name'
" $ write vs$h "
" $ write vs$h "
" $ write vs$h "
" $ write vs$h "
" $ close vs$h $ open /append vs$file vs$body.html $ write vs$file " " $ write vs$file "" $ vs$rec=" " $ write vs$file vs$rec $ close vs$file $! $Create_Chapter_Text: $ if .not. vs$text then goto Create_Chapter_End $ open /append vs$file vs$header.txt $ write vs$file "''vs$Cur_Chapter_Name'" $ close vs$file $ open/append vs$file vs$body.txt $ write vs$file vs$spaces $ write vs$file vs$spaces $ write vs$file "------------------------- ", "''vs$Cur_Chapter_Name'", " -------------------------" $ write vs$file vs$spaces $ close vs$file $Create_Chapter_End: $Exit $ENDSUBROUTINE ! Create_Chapter $! $!-------------------------------------------------------------------------- $Write_DCL: SUBROUTINE $ set noon $! set nocontrol=y $ command=P1 $ define sys$output vs$dcl2.txt $ 'command' $ deassign sys$output $ if .not. vs$html then goto Write_DCL_Text $ append sys$input vs$body.html $DECK

$EOD $! $ open /append vs$file vs$body.html $ write vs$file "$ ",command $ close vs$file $ append sys$input vs$body.html $DECK
$EOD
$ convert/append vs$dcl2.txt vs$body.html
$ append sys$input vs$body.html
$DECK
        

$EOD $! $Write_DCL_Text: $ if .not. vs$text then goto Write_DCL_Text_End $ open /append vs$file vs$body.txt $ write vs$file "''vs$spaces'" $ write vs$file "$ ",command $ write vs$file vs$spaces $ close vs$file $ convert/append vs$dcl2.txt vs$body.txt $Write_DCL_Text_End: $ delete/nolog vs$dcl2.txt; $Exit ! from Write_DCL $ENDSUBROUTINE $! $!-------------------------------------------------------------------------- $Write_SDA: SUBROUTINE $set noon $ sda_command=P1 $ open /write vs$file vs$sda1.txt $ write vs$file "$ analyze/system" $ write vs$file "set output/noheader vs$sda2.txt" $ write vs$file "''sda_command'" $ close vs$file $ define sys$output nl: $ @vs$sda1.txt $ deassin sys$output $ delete /nolog vs$sda1.txt; $ if .not. vs$html then goto Write_SDA_Text $ append sys$input vs$body.html $DECK

$EOD $! $ open /append vs$file vs$body.html $ write vs$file "SDA> ", sda_command $ close vs$file $ append sys$input vs$body.html $DECK
$EOD
$ convert/append vs$sda2.txt vs$body.html
$ append sys$input vs$body.html
$DECK
        

$EOD $! $Write_SDA_Text: $ if .not. vs$text then goto Write_SDA_Text_End $ open /append vs$file vs$body.txt $ write vs$file vs$spaces $ write vs$file "SDA> ", sda_command $ close vs$file $ convert/append vs$sda2.txt vs$body.txt $Write_SDA_Text_End: $ delete/nolog vs$sda2.txt; $Exit ! from Write_SDA $ENDSUBROUTINE $! $!--------------------------------------------------------------------------- $Write_File: SUBROUTINE $ set noon $ if .not.vs$html then goto Write_File_Text $ if P1.eqs."" then goto Write_File_Html_2 $ append sys$input vs$body.html $DECK

$EOD $ $ open /append vs$file vs$body.html $ write vs$file "''P1'" $ close vs$file $! $Write_File_Html_2: $ append sys$input vs$body.html $DECK
$EOD
$ 	convert/append 'P2' vs$body.html
$ 	append sys$input vs$body.html
$DECK
        

$EOD $ $Write_File_Text: $ if .not. vs$text then goto Write_File_Text_End $ if P1.eqs."" then goto Write_File_Text_2 $ open /append vs$file vs$body.txt $ write vs$file vs$spaces $ write vs$file "''P1'" $ write vs$file vs$spaces $ close vs$file $! $Write_File_Text_2: $ convert/append 'P2' vs$body.txt $Write_File_Text_End: $Exit ! from Write_File $ENDSUBROUTINE $! $!------------------------------------------------------------ $ Create_Topic: SUBROUTINE $ set noon $ if vs$verbose then say " ... ''P2'" $ if .not. vs$html then goto Create_Topic_Text $ open/append vs$h vs$header.html $ write vs$h "
  • " $ write vs$h " ''P2'" $ write vs$h "
  • " $ close vs$h $ append sys$input vs$body.html $DECK

    $EOD $ open/append vs$b vs$body.html $ vs$temp = " [Top<<-][''vs$Cur_Chapter_Name'<-]" $ write vs$b vs$temp $ write vs$b " " $ vs$temp = " "+P2+"" $ write vs$b vs$temp $ close vs$b $ append sys$input vs$body.html $DECK

    $EOD $! $Create_Topic_Text: $ if .not.vs$text then Exit $ open/append vs$file vs$header.txt $ write vs$file " ''P2'" $ close vs$file $ open/append vs$file vs$body.txt $ write vs$file vs$spaces $ write vs$file vs$Cur_Chapter_Name,"/","''P2'"," :" $ close vs$file $Exit $EndSubroutine ! Create_Topic $! $!------------------------------------------------------------ $ Create_Title: SUBROUTINE $ set noon $ if .not. vs$html then goto Create_Title_Text $ file = "vs$body.html" $ if P2.nes."" then file="vs$header.html" $ append sys$input 'file' $DECK

    $EOD $ open/append vs$file 'file' $ write vs$file P1 $ close vs$file $ append sys$input 'file' $DECK

    $EOD $! $Create_Title_Text: $ if .not. vs$text then Exit $ if P3.eqs. "HTML_ONLY" then Exit $ file = "vs$body.txt" $ if P2.nes."" then file="vs$header.txt" $ open/append vs$file 'file' $ write vs$file "''vs$spaces'" $ write vs$file P1 $ close vs$file $Exit $EndSubroutine $! $!------------------------------------------------------------- $Write_ACMSGEN: SUBROUTINE $set noon $ open /write vs$file vs$acmsgen.txt $ write vs$file "define/user sys$command sys$input" $ write vs$file "$mcr acmsgen" $ write vs$file "use current" $ write vs$file "show/all" $ write vs$file "exit" $ close vs$file $ @vs$acmsgen.txt/output=vs$acmsgen2.txt $ call Write_File "ACMSGEN> use current ACMSGEN> show/all" "vs$acmsgen2.txt" $ delete /nolog vs$acmsgen.txt; $ delete/nolog vs$acmsgen2.txt; $Exit ! from Write_ACMSGEN $ENDSUBROUTINE $! $!--------- End of vsi$support --------------------------------