# IASr1.ctl: Collects Web Server Information (9iAS 1.x) # $Id: IASr1.ctl,v 1.5 2015/05/29 07:44:27 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/OFM/IASr1.ctl,v 1.5 2015/05/29 07:44:27 RDA Exp $ # # Change History # 20150528 KRA Improve the documentation. =head1 NAME OFM:IASr1 - Collects Web Server Information (9iAS 1.x) =head1 DESCRIPTION This module collects Web Server-related information. There are two functions in this script: one that gathers information for Apache in a hard-coded manner and one that gathers information dynamically. =head1 REPORTS =cut echo tput('bold'),'Processing Web Server (9iAS 1.x) module ...',tput('off') # Initialization import $APACHE_TOP,$ORACLE_HOME var $APACHE_PAR = dirname($APACHE_TOP) var $ORAWEB_HOME = ${D_ORAWEB_HOME:''} var $ORAWEB_ADMIN = ${D_ORAWEB_ADMIN:''} var $OH = verbatim($ORACLE_HOME) var $OH1 = concat('^',$OH,'[\\\/]') var $TOC = '%TOC%' var $TOP = '[[#Top][Back to top]]' toc '1:Web Server (old)' # Load the common macros run OFM:IAS() run RDA:library() # Get the ps command format var $PS_EF run &{check(getOsName(),'aix', 'OS:OSaix',\ 'darwin', 'OS:OSdarwin',\ 'dec_osf', 'OS:OSosf',\ 'dynixptx', 'OS:OSptx',\ 'hpux', 'OS:OShpux',\ 'linux', 'OS:OSlinux',\ 'solaris', 'OS:OSsunos',\ cond(isUnix(), 'OS:OSunix',\ isVms(), 'OS:OSvms'))}('PS') # Getting Web Server Version: 3.x.x or 4.x.x debug ' Inside IASr1 module, getting Web Server Version: 3.x.x or 4.x.x' if loadCommand(concat(catCommand($ORAWEB_HOME,'bin','oraweb'),' -version')) {var $ver = field('/s+',3,grepLastFile('List')) var $chk = substr($ver,0,1) } else {var $OAS = 'NOT INSTALLED' var ($ver,$chk) = () } =head2 web_env - Web Environment Collects the Web environment. =cut debug ' Inside IASr1 module, getting web environment' report web_env toc '2:[[',getFile(),'][rda_report][Web Environment]]' if compare('eq',$chk,'3') {write '---+!! Web Environment' write $TOC # Specific treatment for OAS 3.0 write '---+ Web Server Version: ',$ver call writeLastFile() write $TOP write '---+ Count and Amounts' var ($cnt,$cnt_ora,$cnt_lsn,$cnt_pls,$cnt_jav,$cnt_frm) = \ countCommand($PS_EF,'oraweb','httpd\-','wrbc.*PLSQL','wrbc.*JAVA','f45srv') if $cnt {write '|Number of listeners running| ', $cnt_ora,'|' write '|Number of Netscape listeners| ', $cnt_lsn,'|' write '|Number of PLSQL cartridges running| ',$cnt_pls,'|' write '|Number of JAVA cartridges running| ', $cnt_jav,'|' write '|Number of Forms Servers running| ', $cnt_frm,'|' } var ($cnt,$cn200,$cnt400,$cnt500) = \ countFile(catFile($ORAWEB_ADMIN,'ows,','website30,','wrb,','log,','xlf.log'),\ ' 200 ',' 400 ',' 500 ') if $cnt {write '|Number of Records in xlf.log| ',$cnt,'|' write '|Number STATUS 200 Records in xlf.log| ',$cnt200,'|' write '|Number STATUS 400 Records in xlf.log| ',$cnt400,'|' write '|Number STATUS 500 Records in xlf.log| ',$cnt500,'|' } write '|Number of errors in syserr.log| ',\ countFile(catFile($ORAWEB_HOME,'log','syserr.log')),'|' write $TOP # Status of WRB write '---+ Status of WRB' call writeCommand('owsctl status wrb') write $TOP } elsif compare('eq',$chk,'4') {write '---+!! Web Environment' write $TOC # Specific treatment for OAS 4.0 write '---+ Web Server Version: ',$ver call writeCommand(concat(catCommand($ORAWEB_HOME,'bin','owsctl'),' -v')) write $TOP write '---+ Count and Amounts' var ($cnt,$cnt_ora,$cnt_lsn,$cnt_fac,$cnt_frm) = \ countCommand($PS_EF,'oraweb','httpd\-','wrksf','f45srv') if $cnt {write '|Number of listeners running| ', $cnt_ora,'|' write '|Number of Netscape listeners| ', $cnt_lsn,'|' write '|Number of factories running| ', $cnt_fac,'|' write '|Number of Forms Servers running| ',$cnt_frm,'|' } write '|Number of errors in syserr.log| ',\ countFile(catFile($ORAWEB_HOME,'log','syserr.log')),'|' write $TOP # Status of WRB write '---+ Status of WRB' call writeCommand('owsctl status -w all') write $TOP } # Common to WAS 3.X and 4.X if $chk {write '---+ OAS Web Environment Variables' write 'Checking for OFA setup: Is ORAWEB_HOME set?' write loop $key (grepEnv('ORAWEB')) write '|',$key,' |',getEnv($key),' |' write $TOP var $dir = catDir($ORAWEB_HOME,'bin') prefix write '---+ ',encode($dir),' File Listing' call statDir('nr',$dir) if hasOutput(true) write $TOP write '---++ Last 10 errors from file:' var $log = catFile($ORAWEB_HOME,'log','syserr.log') if !writeTail($fil,10) write '**Cannot Read: $ORAWEB_HOME/log/syserr.log**%BR%' write $TOP var $dir = catDir($ORACLE_HOME,'ows','admin','ows','website30') if ?testDir('r',$dir) {write '---++ Glance at 10 errors from all .err files' loop $fil (grepDir($dir,'\.err$','ir')) {prefix write '---+++ Tail of ',encode($fil),' File' call writeTail($fil,10) if hasOutput(true) write $TOP } } # Successfull http transaction and http errors - NON-ORACLE prefix write '---+++ Tail of xlf.log File' call writeTail(catFile($ORACLE_HOME,'ows','admin','ows','website30','wrb',\ 'log','xlf.log'),10) if hasOutput(true) write $TOP } elsif ?testDir('r',$APACHE_TOP) {write '---+!! Web Environment for APACHE' write $TOC write '---+ Web Related Environment Parameters' write '|*Variable*|*Value*|' write '|APACHE_TOP|', $APACHE_TOP,' |' write '|ORACLE_HOME|',$ORACLE_HOME,' |' write '|Connections||' write '|ORACLE_SID|', getEnv('ORACLE_SID'),' |' write '|TNS_ADMIN|', getEnv('TNS_ADMIN'),' |' write '| ||' loop $key (grepEnv('(WEB|FORM|REPORT|JAVA|HTML|JDK|CGI|LD_LIB)')) write '|',$key,'|',getEnv($key),' |' write $TOP loop $fil (grepDir($APACHE_PAR,'^wdb.*app$','ir')) {prefix {write '---+ Viewing ',encode(basename($fil)) write '---## ',encode($fil) } if !writeFilter($fil,'^(\s*password\s*=\s*).*$') write '**Cannot read: ',encode($fil),'**%BR%' write $TOP } # Currently checks for either httpds.pid or httpd.pid but they could be in a # different location than the default. Probably should add logic to get the # correct "pid" file name from http(s).conf or get the processes directly from # ps. var $dir = catFile($APACHE_TOP,'logs') if ?testFile('r',catFile($dir,'httpds.pid')) {call loadFile(lastFile()) var ($pid) = getLines(0,0) var $pat = concat(' ',$pid,' ') var $own = field('\s+',0,grepCommand($PS_EF,$pat,'f')) var $usr = user() var $loc = 'httpds.pid' } elsif ?testFile('r',catFile($dir,'httpd.pid')) {call loadFile(lastFile()) var ($pid) = getLines(0,0) var $pat = concat(' ',$pid,' ') var $own = field('\s+',0,grepCommand($PS_EF,$pat,'f')) var $usr = user() var $loc = 'httpd.pid' } else write 'Could not find the httpd.pid or httpds.pid in the ',encode($dir),\ ' directory.' } else {write '---+ Web Server Version' write 'OAS apparently not installed.' var $OAS = 'NOT_INSTALLED' } =head2 cfg_files - Configuration Files Reports information about configuration files. =cut debug ' Inside IASr1 module, getting configuration files' report cfg_files if $chk {if ?testDir('r',$ORAWEB_ADMIN) {write '---+!! Web Configuration files ending in .cfg' write $TOC var $cnt = 0 loop $fil (grepDir($ORACLE_HOME,'\.cfg$','ir')) {next match($fil,'lynx') next grepFile($fil,'lyn','f') prefix write '---+ Viewing ',encode($fil) call writeFile($fil) if hasOutput(true) {incr $cnt write $TOP } } if !$cnt write '**Apparently could not find any cfg files under ORACLE_HOME.**' } } elsif ?testDir('r',$APACHE_TOP) {loop $dir ($APACHE_TOP,$APACHE_PAR,catDir($APACHE_PAR,'modplsql','cfg'),\ catDir($APACHE_PAR,'Jserv','etc')) {write '---+ Currently Showing: ',encode($dir) call statDir('n',$dir) } if getEnv('FORMS60_WEB_CONFIG_FILE') {var $fil = key(last) if ?testFile('r',$fil) {write '---+ Viewing FORMS60_WEB_CONFIG_FILE:',encode($fil) call writeFile($fil) } else write '**Cannot read: ',encode($fil),'**%BR%' } else write '---+ FORMS60_WEB_CONFIG_FILE variable not setup.' } if isCreated(true) toc '2:[[',getFile(),'][rda_report][Configuration Files]]' =head2 web_processes - Web Processes Gathers Web processes. =cut debug ' Inside IASr1 module, getting web processes' report web_processes if $chk {call loadCommand($PS_EF) prefix {write '---+ Web Related Processes: wrbs and orbs' write '' write getHeader() } loop $lin (grepLastFile('wrb')) write $lin loop $lin (grepLastFile('orb')) write $lin if hasOutput(true) write '' } elsif isVms() {prefix {write '---+ Apache Processes' write '' } loop $lin (grepCommand('show system','APACHE$WWW','i')) write $lin if hasOutput(true) {write '' if !writeCommand('show process APACHE$WWW') write 'Apache process found, but could not issue the SHOW PROCESS command \ due to lack of privileges.' } } elsif ?testDir('r',$APACHE_TOP) {prefix {write '---+ Apache Web Processes based on PID: ',$pid write '' write getHeader() } loop $lin (grepCommand($PS_EF,$pat)) {write $lin } if hasOutput(true) write '' } else {write 'No configuration information for OAS' write 'Not looking for wrb and orb processes, prob. not an OAS installation' } if isCreated(true) toc '2:[[',getFile(),'][rda_report][Web Processes]]' =head2 apache_over - Apache Overview Provides Apache configuration and overview. =cut debug ' Inside IASr1 module, getting Apache overview' report apache_over if !?testDir('r',$APACHE_TOP) {toc '2:[[',getFile(),'][rda_report][Apache Overview]]' write '---+!! Main Apache Configuration Files' write 'Could not read APACHE_TOP directory: ',encode($APACHE_TOP),'%BR%\ Check Permissions and/or re-run setup to correct path.%BR%' } else {toc '2:[[',getFile(),'][rda_report][Apache Overview]]' write '---+!! Main Apache Configuration Files' write $TOC write '---+ List of Apache Configuration Files in ',encode($APACHE_TOP) var $dir = catDir($APACHE_TOP,'conf') if !statDir('t',$dir) write encode($dir),' either not readable or does not exist' write $TOP loop $fil (grepDir($dir,'\.conf$','inp')) {prefix write '---+ Display of ',encode($fil),' File' call writeFile($fil) if hasOutput(true) write $TOP } =head2 apache_logs - Apache Log Files Gathers Apache log files. =cut debug ' Inside IASr1 module, gathering Apache log files' report apache_logs write '---+!! Apache Log Files' write $TOC toc '2:[[',getFile(),'][rda_report][Apache Log Files]]' # Display log files var $dir = catDir($APACHE_TOP,'logs') write '---+ List Files in ',encode($dir) call statDir('t',$dir) write $TOP # Last 100 Lines of $APACHE_TOP/logs/*error_log loop $nam (grepDir($dir,'error_log$','in')) {call tail_file($dir,$nam,100) write $TOP } # Last 100 Lines of $APACHE_TOP/logs/*access_log loop $nam (grepDir($dir,'access_log$','in')) {call tail_file($dir,$nam,100) write $TOP } =for stopwords Jserv =head2 jserv_conf - Jserv Overview Collects Jserv files and configuration information. =cut debug ' Inside IASr1 module, gathering JServ files and configuration' report jserv_conf toc '2:[[',getFile(),'][rda_report][Jserv Overview]]' write '---+!! Jserv Overview' write $TOC var $dir1 = catDir($APACHE_PAR,'Jserv','etc') var $dir2 = catDir($APACHE_PAR,'Jserv','conf') write '---+ Main JServ Configuration Files' call statDir('t',$dir1) call statDir('t',$dir2) write $TOP loop $fil (grepDir($dir1,'\.(conf|properties)$','inp'),\ grepDir($dir2,'\.(conf|properties)$','inp')) {write '---++ Display of ',encode($fil) if !writeFile($fil) write 'Could not read or find file: ',encode($fil) write $TOP } write '---+ JServ Log Files' var $dir = catDir($APACHE_PAR,'Jserv','logs') call statDir('t',$dir) loop $nam (grepDir($dir,'\.log$','it')) {write '---++ Display Last 100 Lines of ',encode($nam) var $fil = catFile($dir,$nam) if !writeTail($fil,100) write 'Could not read or find file: ',encode($fil) write $TOP } write '---+ JServ Processes' prefix {write '' write getHeader() } loop $lin (grepCommand($PS_EF,'JServ')) write $lin if hasOutput(true) write '' else write 'No JServ processes found.%BR%\ Could be not running or not installed on this machine.%BR%' write $TOP } =for stopwords signonp util =head2 signon - Main URL / signonp - owa_util.print_cgi_env Performs Web Server checks through SQL*Plus. For Web Server checks, you must set up the base URL and PL/SQL as follows: =over 2 =item o ChostE:EportE"> =item o ChostE:EportE/VIS/plsql"> =back =cut if ?${SET.DB.DB.I_DB} {call setSqlTarget(last) if !testSql() {debug ' Inside IASr1 module, web checks via SQLPLUS' set $req {SELECT utl_http.request('_URL_') " FROM dual; } report signon var $url = concat(${T_WEB_BASE},'/') var $sql = replace($req,'_URL_',$url) prefix {write '---+ Main URL: ',$url write '' } call writeSql($sql) if hasOutput(true) {write '' toc '2:[[',getFile(),'][rda_report][Main URL]]' } report signonp var $url = concat(${T_WEB_DCD},'/owa_util.print_cgi_env') var $sql = replace($req,'_URL_',$url) prefix {write '---+ URL: ',$url write '' } call writeSql($sql) if hasOutput(true) {write '' toc '2:[[',getFile(),'][rda_report][owa_util.print_cgi_env]]' } } } =head1 HTTP Server (new) Collects all files that are directly related to Oracle HTTP Server Powered by Apache, by scanning configuration files dynamically and identifying relevant files. =cut echo tput('bold'),'Processing HTTP Server ...',tput('off') toc '%SPLIT%' toc '1:HTTP Server (new)' report apache_bin var $dir = catDir($APACHE_TOP,'bin') prefix write '---+ List of Files in ',encode($dir) call statDir('an',$dir) if isCreated(true) {toc '2:Generic' toc '3:[[',getFile(),'][rda_report][',encode(addSymbol($dir)),']]' } debug ' Inside IASr1 module, getting Apache configuration' call httpServer_getListenerConf() debug ' Inside IASr1 module, getting Apache log files' call httpServer_getListenerLogs() debug ' Inside IASr1 module, getting start scripts' call httpServer_getStartScripts() debug ' Inside IASr1 module, getting mod_plsql configuration' call httpServer_getModplsqlConf() debug ' Inside IASr1 module, getting JServ configuration' call httpServer_getJServConf() debug ' Inside IASr1 module, getting JServ log files' call httpServer_getJServLogs() debug ' Inside IASr1 module, getting JServ Java version' call httpServer_getJServJavaVersions() =head1 SEE ALSO L, L =head1 COPYRIGHT NOTICE Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. =head1 TRADEMARK NOTICE Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. =cut