#!/usr/bin/regina /* ReXX */ /**************************************************************** * REXX zum automatischen Einspielen von Patches * * * * * * Aufruf: Update_OS * * Version: 1.3 * * Autor: J. Weber * * * * Aenderungen: * *--------------------------------------------------------------* * 1.0 | Initiale Version * * | * * 1.1 | Fehlerkorrektur bei zypper patch: * * | -y, --no-confirm * * | -l, --auto-agree-with-licenses * * | eingefügt. * * | * * 1.2 | Automatische Reboot, wenn zypper rc = 102 * * | * * 1.3 | zypper command um Verbose option erweitert * * | * * x.x | * * | * **************************************************************** trace i */ /*********************************************************************************** * ***********************************************************************************/ OPTIONS AREXX_BIFS PARSE version language level day month year . PARSE source system invocation filename . SIGNAL ON SYNTAX language = TRANSLATE(language) module = DELSTR(filename,1,LASTPOS("/",filename)) retc=0 ToDo = "" Repo = "" sReboot = 0 DT=DATE('S') PARSE UPPER ARG Parmlist /* Get Parameter 1 */ /*********************************************************************************** * ***********************************************************************************/ /*********************************************************************************** *
***********************************************************************************/ SAY module" starts at "DATE('N')" "TIME('N')" running under "language" Lvl "level CALL RXFUNCADD 'sysloadfuncs', 'RexxUtil', 'sysloadfuncs' CALL sysloadfuncs SAY module": "SysVersion() current_dir = directory() /* save current dir. */ CALL check_Parms retc = RESULT IF retc <> 0 THEN SIGNAL PROG_ENDE 'zypper ref 'Repo retc = RC IF ToDo = "PATCH" & retc = 0 THEN DO 'zypper -vvv pchk --with-optional 'Repo retc = RC IF retc >= 100 & retc <= 101 THEN DO 'zypper -vvv lp --with-optional 'Repo IF RC = 0 THEN DO CALL Install_Patches retc = RESULT END END END IF ToDo = "UPDATE" & retc = 0 THEN DO 'zypper -vvv lu 'Repo IF RC = 0 THEN DO CALL Install_Updates retc = RESULT END END IF retc = 0 THEN , 'zypper ps -s' /*********************************************************************************** *
***********************************************************************************/ PROG_ENDE: IF sReboot THEN , 'systemctl reboot' SAY module" ends at "DATE('N')" "TIME('N') EXIT retc /*********************************************************************************** * ***********************************************************************************/ SYNTAX: errorline = Strip(Sourceline(sigl)); errormgs = Errortext(rc) Say "=======================================================================" Say "REXX-Error in Exec" module ") in line" sigl Say "line" sigl!!":" errorline Say "Error-Msg :" errormsg Say "=======================================================================" EXIT 16 /********************************************************************************** ********************************************************************************** ********************************************************************************** ** Sub Procedures ** ********************************************************************************** ********************************************************************************** **********************************************************************************/ /*********************************************************************************** * ***********************************************************************************/ Check_Parms: Procedure Expose module Parmlist ToDo Repo sRC = 0 SAY module": check Parameters: "Parmlist SELECT WHEN WORDS(Parmlist) = 1 THEN , ToDo = WORD(Parmlist, 1) WHEN WORDS(Parmlist) = 2 THEN DO Repo = "-r "WORD(Parmlist, 2) ToDo = WORD(Parmlist, 1) END WHEN WORDS(Parmlist) = 0 THEN , ToDo = "PATCH" OTHERWISE SAY module": invalid input" sRC = 12 END IF sRC = 0 THEN DO IF ToDo <> "PATCH" & ToDo <> "UPDATE" THEN DO SAY module": Parameter 1 must be 'PATCH' or 'UPDATE'" sRC = 12 END END Return sRC /*********************************************************************************** * ***********************************************************************************/ /*********************************************************************************** * ***********************************************************************************/ Install_Patches: Procedure Expose module Repo sReboot sRC = 0 RC = 0 SAY module": Execute 'zypper -vvv patch -y -l --with-optional --with-update --with-interactive "Repo"'" 'zypper -vvv patch -y -l --with-optional --with-update --with-interactive 'Repo IF RC = 103 THEN , 'zypper -vvv patch -y -l --with-optional --with-update --with-interactive 'Repo sRC = RC IF sRC = 102 THEN DO SAY module": Reboot erforderlich!" sReboot = 1 END ELSE , IF sRC <> 0 THEN , SAY module": Install patches not successfull, Return_Code="sRC Return sRC /*********************************************************************************** * ***********************************************************************************/ /*********************************************************************************** * ***********************************************************************************/ Install_Updates: Procedure Expose module Repo sReboot sRC = 0 RC = 0 SAY module": Execute 'zypper -vvv up -y -l --with-optional --with-interactive '"Repo 'zypper -vvv up -y -l 'Repo sRC = RC IF sRC = 102 THEN DO SAY module": Reboot erforderlich!" sReboot = 1 END ELSE , IF sRC <> 0 THEN , SAY module": Install updates not successfull, Return_Code="sRC Return sRC /*********************************************************************************** * ***********************************************************************************/ /********************************************************************************** ********************************************************************************** ** END OF Update_OS ** ********************************************************************************** **********************************************************************************/