Server IP : 184.154.167.98 / Your IP : 3.147.82.108 Web Server : Apache System : Linux pink.dnsnetservice.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 User : puertode ( 1767) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/sbin/ |
Upload File : |
#!/usr/libexec/platform-python import sys import optparse import json import time from pyexpat import ExpatError sys.path.append("/usr/share/rhn/") from up2date_client import rhnserver from up2date_client import up2dateAuth from up2date_client import up2dateErrors from up2date_client import up2dateUtils from up2date_client import rhnreg from up2date_client import config up2date_path = '/etc/sysconfig/rhn/up2date' valid_channels = ['7', '8'] def print_message(message): print( json.dumps({'result': message, 'timestamp': time.time()}) ) def print_error_and_exit(error, retcode=1): print_message(error) sys.exit(retcode) def sanity_check(): """ Check CloudLinux OS Check CL7 """ version = up2dateUtils.getVersion() release = up2dateUtils.getOSRelease() if version not in valid_channels or release != 'cloudlinux-release': valid_version_string = '/'.join(valid_channels) print_error_and_exit('Version upgrade is available for CloudLinux OS {} only'.format(valid_version_string), 10) def set_version_override(value): up2date_conf = config.Config(up2date_path) up2date_conf.set('versionOverride', value) up2date_conf.save() def main(): """ Return codes: 1: Generic errors; with details printed 2: Unable to read system id 3: Switch channel error 10: Sanity check failed """ retcode = 0 parser = optparse.OptionParser() parser.add_option('-t', '--target-channel', dest='channel', help='Channel to switch to') parser.add_option('-f', '--force', action='store_true', default=False, dest='force', help='Run command without additional checks') parser.add_option('-o', '--override', action='store_true', default=False, dest='override', help='Set versionOverride config value') options, args = parser.parse_args() if not options.force: sanity_check() if not options.channel or options.channel not in valid_channels: print_error_and_exit("Invalid usage, please provide [-t|--target-channel] argument;" " valid values are: %s" % valid_channels) system_id_xml = up2dateAuth.getSystemId() if not system_id_xml: print_error_and_exit('Unable to read system id, please make sure that your server is registered in CLN', 2) if options.channel in valid_channels: if options.override: set_version_override(options.channel) retcode = switch_channel(system_id_xml, options.channel) return retcode def switch_channel(system_id, channel): """ :param system_id: str, XML :param channel: str, intable """ retcode = 3 try: rhn_server = rhnserver.RhnServer() ret = rhn_server.registration.upgrade_version(system_id, channel) if '<?xml version="1.0"?>' in ret: # XML returned on success, the same as `system_id` write_status = rhnreg.writeSystemId(ret) if write_status: print_message('Channel updated to %s' % channel) retcode = 0 except ExpatError as _e: # CLN returns empty response when success if 'no element found' not in _e.message: raise return retcode if __name__ == "__main__": try: _rc = main() sys.exit(_rc) except up2dateErrors.UnknownMethodException as e: print_error_and_exit('Unsupported CLN method. %s \n' 'Contact CloudLinux support if you require further assistance: ' 'https://cloudlinux.zendesk.com/' % str(e)) except up2dateErrors.RhnServerException as e: print_error_and_exit('Server exception, reason: %s \n' 'Contact CloudLinux support if you require further assistance: ' 'https://cloudlinux.zendesk.com/' % str(e)) except Exception as e: print_error_and_exit('Failed with common exception: %s \n' 'Contact CloudLinux support if you require further assistance: ' 'https://cloudlinux.zendesk.com/' % str(e))