def getKdumpInfo(): INFO = {'Installed': False, 'Active': False} if( SUSE.packageInstalled('kdump') and SUSE.packageInstalled('kexec-tools') ): INFO['Installed'] = True SERVICE_NAME = 'kdump.service' SERVICE = SUSE.getServiceDInfo(SERVICE_NAME) if( len(SERVICE) > 0 and SERVICE['ActiveState'].lower() == 'active' ): INFO['Active'] = True return INFO
def kdumpEnabled(): FILE_OPEN = "crash.txt" CONTENT = {} Enabled = 0 if SUSE.packageInstalled('kdump'): Enabled += 1 if SUSE.packageInstalled('kexec-tools'): Enabled += 1 if Core.listSections(FILE_OPEN, CONTENT): for LINE in CONTENT: if "/etc/sysconfig/kdump" in CONTENT[LINE]: Enabled += 1 break if( Enabled >= 3 ): return True else: return False
############################################################################## META_CLASS = "SLE" META_CATEGORY = "Technology" META_COMPONENT = "Preview" PATTERN_ID = os.path.basename(__file__) PRIMARY_LINK = "META_LINK_Note" OVERALL = Core.TEMP OVERALL_INFO = "NOT SET" OTHER_LINKS = "META_LINK_Note=https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/#Intro.Support.Techpreviews|META_LINK_Support=https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/#fate-315333|META_LINK_Fate=https://fate.suse.com/315333|META_LINK_Docs=http://gcc.gnu.org/onlinedocs/gcc/" Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS) ############################################################################## # Main Program Execution ############################################################################## SERVER = SUSE.getHostInfo() PACKAGE = 'gcc' if "s390x" in SERVER['Architecture'].lower(): if( SUSE.packageInstalled(PACKAGE) ): Core.updateStatus(Core.WARN, "Hot Patching support in gcc on s390x is unsupported technology preview software") else: Core.updateStatus(Core.ERROR, "Package not installed: " + str(PACKAGE)) else: Core.updateStatus(Core.ERROR, "Invalid architecture: " + str(SERVER['Architecture'])) Core.printPatternResults()
def anyPackageFound(PACKAGES): for PACKAGE_NAME in PACKAGES: if ( SUSE.packageInstalled(PACKAGE_NAME) ): return True return False
SECTION = "/var/log/messages" CONTENT = [] Failure = re.compile("multipath.*failed path|multipath.*failing path|multipath.*mark as failed", re.IGNORECASE) if Core.getRegExSection(FILE_OPEN, SECTION, CONTENT): for LINE in CONTENT: if Failure.search(LINE): return True return False ############################################################################## # Main Program Execution ############################################################################## RPM_NAME = 'multipath-tools' RPM_VERSION = '0.4.9-112.1' if( SUSE.packageInstalled(RPM_NAME) ): INSTALLED_VERSION = SUSE.compareRPM(RPM_NAME, RPM_VERSION) if( INSTALLED_VERSION == 0 ): if( pathFailure() ): Core.updateStatus(Core.CRIT, "MPIO path failure detected, all paths will fail - update multipath-tools") else: Core.updateStatus(Core.WARN, "Susceptible to multiple MPIO path failures - update multipath-tools") else: Core.updateStatus(Core.IGNORE, "Bug fix applied for " + RPM_NAME) else: Core.updateStatus(Core.ERROR, "ERROR: RPM package not installed: " + RPM_NAME) Core.printPatternResults()
for LINE in CONTENT: if ERROR_MSG.search(LINE): return True SECTION = "/var/log/messages" CONTENT = [] if Core.getRegExSection(FILE_OPEN, SECTION, CONTENT): for LINE in CONTENT: if ERROR_MSG.search(LINE): return True return False ############################################################################## # Main Program Execution ############################################################################## if( SUSE.packageInstalled('orarun') ): if( SUSE.packageInstalled('libXi6') ): if( SUSE.packageInstalled('libcap1') ): Core.updateStatus(Core.IGNORE, "Orarun required packages installed, not applicable") else: if( errorMessagesFound() ): Core.updateStatus(Core.CRIT, "Failed oraran installation, missing required package: libcap1") else: Core.updateStatus(Core.WARN, "Oraran installation will fail, missing required package: libcap1") else: if( SUSE.packageInstalled('libcap1') ): if( errorMessagesFound() ): Core.updateStatus(Core.CRIT, "Failed oraran installation, missing required package: libXi6") else: Core.updateStatus(Core.WARN, "Oraran installation will fail, missing required package: libXi6") else:
############################################################################## # Overriden (eventually or in part) from SDP::Core Module ############################################################################## META_CLASS = "SUMA" META_CATEGORY = "Master TID" META_COMPONENT = "All" PATTERN_ID = os.path.basename(__file__) PRIMARY_LINK = "META_LINK_TID" OVERALL = Core.TEMP OVERALL_INFO = "NOT SET" OTHER_LINKS = "META_LINK_TID=https://www.suse.com/support/kb/doc.php?id=7012610|META_LINK_Docs=https://www.suse.com/documentation/suse_manager/" Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS) ############################################################################## # Main Program Execution ############################################################################## if( SUSE.packageInstalled('susemanager') ): Core.updateStatus(Core.REC, "Consider TID7012610 - SUSE Manager Master TID") elif( SUSE.packageInstalled('susemanager-proxy') ): Core.updateStatus(Core.REC, "Consider TID7012610 - SUSE Manager Master TID") else: Core.updateStatus(Core.IGNORE, "SUMA not found, not applicable") Core.printPatternResults()
Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS) ############################################################################## # Local Function Definitions ############################################################################## def checkDNSStartFail(): fileOpen = "dns.txt" section = "named.run" content = {} if Core.getSection(fileOpen, section, content): for line in content: if "zone 'RootServerInfo.': Designated Server is not available" in content[line]: return True return False ############################################################################## # Main Program Execution ############################################################################## if (SUSE.packageInstalled('novell-bind')): if( checkDNSStartFail() ): Core.updateStatus(Core.CRIT, "RootServerInfo DNS zone designated primary observed") else: Core.updateStatus(Core.IGNORE, "RootServerInfo DNS zone correctly missing designated primary") else: Core.updateStatus(Core.ERROR, "ERROR: novell-bind not installed, skipping test") Core.printPatternResults()
fileOpen = "samba.txt" section = "wbinfo -u" content = {} if Core.getSection(fileOpen, section, content): for line in content: #if something in section if "Error looking up domain users" in content[line]: return True return False ############################################################################## # Main Program Execution ############################################################################## if( SUSE.compareKernel(SUSE.SLE11SP2) >= 0 and SUSE.compareKernel(SUSE.SLE11SP3) < 0 ): if( SUSE.packageInstalled("samba") and SUSE.packageInstalled("samba-winbind") ): if( SUSE.compareRPM("samba", "3.6.3-0.30.1") == 0 ): if( winBindRunning() ): Core.updateStatus(Core.WARN, "Winbind AD lookups may fail, update system for newer Samba packages") if( winBindFailures() ): Core.updateStatus(Core.CRIT, "Winbind AD lookup failure, update system for newer Samba packages") else: Core.updateStatus(Core.ERROR, "Winbind service is not running, skipping test") else: Core.updateStatus(Core.ERROR, "Samba version has been verified, skipping test") else: Core.updateStatus(Core.ERROR, "Samba/Winbind not installed, skipping test") else: Core.updateStatus(Core.ERROR, "Outside the kernel scope") Core.printPatternResults()
def errorsFound(): fileOpen = "messages.txt" section = "/var/log/messages" errmsg = re.compile("xadsd.*segfault.*in libdcerpc\.so", re.IGNORECASE) content = {} if Core.getSection(fileOpen, section, content): for line in content: if errmsg.search(content[line]): return True return False ############################################################################## # Main Program Execution ############################################################################## PACKAGE = "novell-xad-framework" if( oes.dsfwCapable() and SUSE.packageInstalled(PACKAGE) ): if( maintPatchInstalled() ): Core.updateStatus(Core.IGNORE, "December 2014 Maintenance Patch installed, AVOIDED") else: if( errorsFound() ): Core.updateStatus(Core.CRIT, "DSfW has crashed due to a known issue, update system with latest patches to resolve") else: Core.updateStatus(Core.WARN, "DSfW may be susceptible to crashing, update to lastest patches to avoid") else: Core.updateStatus(Core.ERROR, "ERROR: Not a DSfW server") Core.printPatternResults()
Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS) ############################################################################## # Local Function Definitions ############################################################################## def vpmuEnabled(): fileOpen = "proc.txt" section = "/proc/cmdline" content = {} if Core.getSection(fileOpen, section, content): for line in content: if "vpmu=1" in content[line]: return True return False ############################################################################## # Main Program Execution ############################################################################## PACKAGE = 'perf' if( SUSE.packageInstalled(PACKAGE) and vpmuEnabled() ): Core.updateStatus(Core.WARN, "Performance Monitoring Tool for VMs is Unsupported") else: Core.updateStatus(Core.ERROR, "Xen performance tools unused") Core.printPatternResults()
import sys, os, Core, SUSE ############################################################################## # Overriden (eventually or in part) from SDP::Core Module ############################################################################## META_CLASS = "Basic Health" META_CATEGORY = "SLE" META_COMPONENT = "SSHD" PATTERN_ID = os.path.basename(__file__) PRIMARY_LINK = "META_LINK_TID" OVERALL = Core.TEMP OVERALL_INFO = "NOT SET" OTHER_LINKS = "META_LINK_TID=http://www.suse.com/support/kb/doc.php?id=7014607" Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS) PACKAGE = "openssh" SERVICE = "sshd.service" ############################################################################## # Main Program Execution ############################################################################## if SUSE.packageInstalled(PACKAGE): SUSE.serviceDHealth(SERVICE) else: Core.updateStatus(Core.ERROR, "Basic Service Health; Package Not Installed: " + str(PACKAGE)) Core.printPatternResults()
SECTION = "ps axwwo" CONTENT = [] CRONS = 0 if Core.getRegExSection(FILE_OPEN, SECTION, CONTENT): for LINE in CONTENT: if "cron" in LINE: CRONS += 1 if( CRONS > 1 ): return True return False ############################################################################## # Main Program Execution ############################################################################## if( SUSE.packageInstalled('cronie') ): if( SUSE.packageInstalled('cron') ): CRONIE_VERSION = SUSE.compareRPM('cronie', '1.4.11-59') CRON_VERSION = SUSE.compareRPM('cron', '4.2-59') if( CRONIE_VERSION < 0 ): if( CRON_VERSION < 0 ): if( multipleCrons() ): Core.updateStatus(Core.CRIT, "Multiple instances of cron running, update system to resolve") else: Core.updateStatus(Core.WARN, "Multiple instances of cron will incorrectly be allowed to run, update system to avoid") else: Core.updateStatus(Core.WARN, "Both cronie and cron packages should be updated together") else: if( CRON_VERSION < 0 ): Core.updateStatus(Core.WARN, "Both cronie and cron packages should be updated together") else:
def missingShim(): PACKAGE_NAME = 'shim' if ( SUSE.packageInstalled(PACKAGE_NAME) ): return False else: return True
def intelCard(): fileOpen = "x.txt" section = "sysp -c" content = {} if Core.getSection(fileOpen, section, content): for line in content: if "Intel" in content[line]: return True return False ############################################################################## # Main Program Execution ############################################################################## if( SUSE.compareKernel(SUSE.SLE11SP3) >= 0 and SUSE.compareKernel(SUSE.SLE11SP4) < 0 ): if( SUSE.packageInstalled('Mesa') ): if( SUSE.compareRPM('Mesa', '9.0.3-0.19.1') <= 0 ): if( intelCard() ): Core.updateStatus(Core.WARN, "GLX applications may fail to start") else: Core.updateStatus(Core.ERROR, "Error: Invalid graphics card, skipping") else: Core.updateStatus(Core.ERROR, "Valid version of Mesa installed, AVOIDED") else: Core.updateStatus(Core.ERROR, "Error: Mesa package not installed, skipping") else: Core.updateStatus(Core.ERROR, "Error: Outside kernel scope, skipping") Core.printPatternResults()
NOT_FOUND = 0 elif int(FAMILY) == 15: Core.updateStatus( Core.WARN, "Potential compatibility issue with AMD processor family and mcelog, update system to apply: " + RPM_NAME + "-" + RPM_VERSION, ) NOT_FOUND = 0 if NOT_FOUND: Core.updateStatus(Core.IGNORE, "Valid processor family found, not applicable") ############################################################################## # Main Program Execution ############################################################################## RPM_NAME = "mcelog" RPM_VERSION = "1.0.2013.01.18-0.15.1" if SUSE.packageInstalled(RPM_NAME): INSTALLED_VERSION = SUSE.compareRPM(RPM_NAME, RPM_VERSION) if INSTALLED_VERSION < 0: checkProcessorFamily() else: Core.updateStatus(Core.IGNORE, "Bug fixes applied for " + RPM_NAME + "-" + RPM_VERSION) else: Core.updateStatus(Core.ERROR, "ERROR: " + RPM_NAME + " not installed") Core.printPatternResults()