#!/usr/bin/python #cf https://rhn.redhat.com/rhn/apidoc/ import os import sys import re import xmlrpclib import getpass rhnUrl='https://rhn.redhat.com/rpc/api' server=xmlrpclib.Server(rhnUrl) login=False password=False rhnSession=False def rhnlogin(login,password): try: rhnSession=server.auth.login(login,password) except xmlrpclib.Fault, fault: if fault.faultCode==-20: print "session expired" rhnlogin(login,password) else: print "Trouble at login",fault raise return rhnSession def listUserSystems(rhnSession): out=[] try: out=server.system.listUserSystems(rhnSession) except xmlrpclib.Fault, fault: if fault.faultCode==-20: rhnlogin(login,password) return listUserSystems(rhnSession) else: raise return out def listBaseChannels(rhnSession,sid): out=[] try: out=server.system.listBaseChannels(rhnSession,sid) except xmlrpclib.Fault, fault: if fault.faultCode==-20: rhnlogin(login,password) return listBaseChannels(rhnSession,sid) else: raise return out login=raw_input("What is your rhn login ?: ") password=getpass.getpass("What is your rhn password ?: ") rhnSession=rhnlogin(login,password) for p in listUserSystems(rhnSession): id=p['id'] name=p['name'] base=False for c in listBaseChannels(rhnSession,int(id)): if c['CURRENT_BASE']: base=c['LABEL'] print name+" ("+base+")"