Я пытаюсь создать список всех пакетов, установленных на сервере, без необходимости проходить каждый, используя rpm
. Я думаю, что Satellite сможет предоставить это в приличном (надеюсь, легко анализируемом) формате.
Вот последний сценарий, расширяющий Джона ответ, чтобы предоставить полное решение.
#!/usr/bin/python
import xmlrpclib
SAT_URL = "https://<SATELLITE_IP>/rpc/api"
SAT_USER = "<USERNAME>"
SAT_PASS = "<PASSWORD>"
client = xmlrpclib.Server(SAT_URL, verbose=0)
key = client.auth.login(SAT_USER, SAT_PASS)
syslist = client.system.listSystems(key)
systems = {}
for system in syslist:
systems[system['name']] = client.system.listPackages(key, system['id'])
# Print out list in a Markdown-like format.
for system in sorted(systems.keys()):
print '%s' % system
print '=' * len(system)
for package in systems[system]:
print '- %s %s' % (package['name'], package['version'])
print
Короткий ответ: да.
Более длинный ответ: вам нужно заглянуть в Satellite API. Документация, доступная со Satellite, хороша для очень простых запросов, но вы быстро получите ответы на запросы, которые (IMHO) не так хорошо документированы. На высоком уровне вы в конечном итоге запросите у Satellite список всех зарегистрированных систем, а затем используете этот список для выполнения запросов для всех установленных пакетов в каждой системе. В конечном счете, это будет действительным только на момент последнего обновления каждой системой своего профиля пакета на Satellite, но это будет более центральным, чем троллинг каждой отдельной системы с помощью запроса RPM.
Вот код, который я использую (очищенный, конечно), чтобы перечислить системы, зарегистрированные на моем Satellite:
#!/usr/bin/python import xmlrpclib SAT_URL = "https://<satellite hostname>/rpc/api" SAT_USER = "<satellite user name>" SAT_PASS = "<password for above login id>" client = xmlrpclib.Server(SAT_URL, verbose=0) key = client.auth.login(SAT_USER, SAT_PASS) syslist = client.system.listSystems(key)
В syslist
переменная - это простой список системных объектов Python - мне еще не нужно было распаковывать его дальше, чем:
for sys in syslist: print "%s registered with Satellite" % (sys['name'],)
Не знаю о версии 5.3, но в отчете о команде 5.6 содержится много информации из командной строки: См .: https://access.redhat.com/documentation/en-US/Red_Hat_S