{"id":4423,"date":"2026-10-05T07:00:00","date_gmt":"2026-10-05T05:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=4423"},"modified":"2026-10-05T14:22:17","modified_gmt":"2026-10-05T12:22:17","slug":"mein-inoffizieller-red-hat-errata-monitor","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/mein-inoffizieller-red-hat-errata-monitor\/","title":{"rendered":"Mein inoffizieller Red Hat Errata-Monitor"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Hi, in diesem Beitrag m\u00f6chte ich euch ein Projekt vorstellen, an dem ich gerade arbeite. Inspiriert ist es von meinem <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/rhel-cve-monitor-fuer-arme-admins\/\" data-type=\"post\" data-id=\"4409\">RHEL CVE Monitor f\u00fcr arme Admins<\/a>. Doch bevor es losgeht, beginne ich mit einem Disclaimer und einem Transparenzhinweis. Anschlie\u00dfend erl\u00e4utere ich die Probleme, die ich mit diesem Projekt l\u00f6sen m\u00f6chte und gebe ein Beispiel wie man es nutzt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Disclaimer: Es handelt sich hierbei um ein Community-Projekt, welches in keinster Weise von Red Hat stammt bzw. unterst\u00fctzt wird. Es nutzt ausschlie\u00dflich \u00f6ffentlich verf\u00fcgbare APIs, die ohne Authentifizierung genutzt werden k\u00f6nnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Transparenzhinweis: Das Projekt ist unter Nutzung eines KI-Coding-Assistenten entstanden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wof\u00fcr ist das gut?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ich f\u00fchre mit meinen Kunden regelm\u00e4\u00dfig Videokonferenzen durch, um sie \u00fcber Neuigkeiten zu informieren und ihre Sorgen, N\u00f6te und Antr\u00e4ge aufzunehmen. Da ich ihre Red Hat-Subskriptionen kenne, m\u00f6chte ich sie dar\u00fcber informieren, welche <a href=\"https:\/\/access.redhat.com\/articles\/explaining_redhat_errata\">Red Hat Errata<\/a> seit unserem letzten Termin ver\u00f6ffentlicht wurden. Die Scripts aus diesem Projekt helfen mir dabei, diese Informationen effizient zusammenzustellen und in die Agenda einzuf\u00fcgen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aktuell bieten die <em>Red Hat Errata Notifications<\/em> noch keine M\u00f6glichkeit die Errata nach Produkt zu filtern. Mein Errata-Monitor bietet diese Funktionalit\u00e4t in Form von Filtern. Im Modus <code>monitor<\/code> speichert er auch den Status der letzten Ausf\u00fchrung, um bei erneuter Ausf\u00fchrung nur die \u00c4nderungen zum vorherigen Lauf auszugeben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Projekt eignet sich damit sowohl f\u00fcr Ad-hoc-Abfragen, als auch f\u00fcr einen Monitoring-Modus, wo das Skript zeitgesteuert ausgef\u00fchrt wird und neue Errata ausgibt bzw. diese Informationen per E-Mail versendet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie nutzt man das?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bitte schaut f\u00fcr eine ausf\u00fchrliche Beschreibung in das <code>README<\/code> des Projekts unter URL: <a href=\"https:\/\/github.com\/Tronde\/rh_errata_monitor\">https:\/\/github.com\/Tronde\/rh_errata_monitor<\/a>. Oder nutzt die Hilfe eines der Scripte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ python3 rh_errata_monitor.py --help\nusage: rh_errata_monitor.py &#91;-h] &#91;--filters FILTERS] &#91;--state-file STATE_FILE] &#91;--initial-days INITIAL_DAYS] &#91;--format {json,csv,md}] &#91;--output OUTPUT] &#91;--exit-code]\n                            &#91;--dry-run] &#91;--verbose]\n                            {monitor,list-products,search} ...\n\nMonitor Red Hat Errata Search API for new errata.\n\npositional arguments:\n  {monitor,list-products,search}\n    monitor             Check for new errata per filter (default)\n    list-products       List available product names from the API\n    search              One-off stateless errata search\n\noptions:\n  -h, --help            show this help message and exit\n  --filters FILTERS     Path to INI filter config file (default: filters.conf)\n  --state-file STATE_FILE\n                        Path to JSON state file (default: .errata_state.json)\n  --initial-days INITIAL_DAYS\n                        On first run (no state), look back this many days (default: 30)\n  --format {json,csv,md}\n                        Output format (default: md)\n  --output OUTPUT       Write report to file in addition to stdout\n  --exit-code           Exit with code 2 when new errata are found\n  --dry-run             Show queries without hitting the API\n  --verbose, -v         Enable debug logging\n\nexamples:\n  rh_errata_monitor.py monitor\n  rh_errata_monitor.py list-products\n  rh_errata_monitor.py list-products --search satellite\n  rh_errata_monitor.py search --product \"Red Hat Satellite\" --after 2024-01-01\n  rh_errata_monitor.py search --synopsis '\"Ansible Automation Platform\" \"Setup Bundle\"'\n  rh_errata_monitor.py monitor --format json --output \/tmp\/errata.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgenden beiden Codebl\u00f6cke zeigen ein kurzes Beispiel f\u00fcr eine Filterdatei und einen Aufruf, den ich benutze, um eine Markdown-Ausgabe f\u00fcr meine Agenda zu generieren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat filter.conf \n# Red Hat Errata Monitor -- Filter Configuration\n#\n# Each &#91;section] defines a named filter that the monitor checks on every run.\n# Available keys:\n#\n#   product  = Exact product name as listed by 'list-products' command\n#              Maps to: fq=portal_product_names:(\"...\")\n#\n#   synopsis = Free-text search terms matched against errata synopsis\/content\n#              Use quotes for exact phrases: \"Satellite 6\" \"release\"\n#              Maps to: q=...\n#\n# Both keys are optional.  If both are set, results must match BOTH (AND logic).\n# If neither is set, all errata are returned (not recommended).\n#\n# Run 'list-products' to discover valid product names:\n#   python3 rh_errata_monitor.py list-products\n#   python3 rh_errata_monitor.py list-products --search satellite\n\n# -- Red Hat Satellite -------------------------------------------------------\n\n&#91;satellite-releases]\n# All errata for the \"Red Hat Satellite\" product that mention \"Satellite 6\"\nproduct = Red Hat Satellite\nsynopsis = Satellite 6\n\n&#91;satellite-capsule]\nproduct = Red Hat Satellite Capsule\n\n# -- Red Hat Enterprise Linux ------------------------------------------------\n&#91;RHEL]\nproduct = Red Hat Enterprise Linux for x86_64<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ich m\u00f6chte also Errata f\u00fcr den Red Hat Satellite, Capsules und RHEL abrufen, was wie folgt aussehen kann (Ausgabe gek\u00fcrzt):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ python3 rh_errata_monitor.py search --filters filter.conf --after 2026-09-24\n### satellite-releases (0 errata since 2026-09-24)\n\n  - none\n\n### satellite-capsule (0 errata since 2026-09-24)\n\n  - none\n\n### RHEL (50 errata since 2026-09-24)\n\n  - &#91;RHBA-2026:73791 - New Application Stream container images](https:\/\/access.redhat.com\/errata\/RHBA-2026:73791) - None\n  - &#91;RHSA-2026:73766 - Important: pki-core security update](https:\/\/access.redhat.com\/errata\/RHSA-2026:73766) - Important\n  - &#91;RHSA-2026:73765 - Important: dogtag-pki security update](https:\/\/access.redhat.com\/errata\/RHSA-2026:73765) - Important\n  - &#91;RHBA-2026:73746 - New Application Stream container images](https:\/\/access.redhat.com\/errata\/RHBA-2026:73746) - None\n  - &#91;RHEA-2026:73547 - multiple NVIDIA kernel module packages bug fix and enhancement update](https:\/\/access.redhat.com\/errata\/RHEA-2026:73547) - None\n  - &#91;RHEA-2026:73546 - multiple NVIDIA kernel module packages bug fix and enhancement update](https:\/\/access.redhat.com\/errata\/RHEA-2026:73546) - None\n  - &#91;RHSA-2026:73512 - Moderate: gawk security update](https:\/\/access.redhat.com\/errata\/RHSA-2026:73512) - Moderate\n  - &lt;AUSGABE GEK\u00dcRZT>\n\n**Total: 50 errata since 2026-09-24 across 1 filter**<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ich lasse mir hier die Errata ausgeben, die nach dem 24.09.2026 ver\u00f6ffentlicht wurden. W\u00e4hrend es f\u00fcr den Satellite und dessen Capsules nichts neues gibt, sind 50 Errata f\u00fcr RHEL ver\u00f6ffentlicht worden. Ich habe die Ausgabe hier im Blog gek\u00fcrzt, das Format ist jedoch ersichtlich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Liste kann ich nun per Copy&amp;Paste in das Tool \u00fcbernehmen, mit dem ich die Agenda f\u00fcr meinen TAM-Call generiere.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie stabil ist das Projekt?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bei dem was ihr aktuell auf GitHub findet, handelt es sich um ein Pre-Release. Ich nutze es seit einigen Tagen und bisher hat es meinen Rechner nicht gest\u00f6rt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die Filter nutze ich die Produktnamen aus der API und Filter die Strings aus dem Abschnitt <code>Synopsis<\/code>. Gerade letzteres ist Fehlerbehaftet und kann zu ungenauen bzw. fehlerhaften Ausgaben f\u00fchren. Falls euch Fehler auffallen, freue ich mich, wenn ihr diese <a href=\"https:\/\/github.com\/Tronde\/rh_errata_monitor\/issues\">meldet<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Falls ihr dieses Projekt n\u00fctzlich findet, lasst es mich gerne wissen. Dazu k\u00f6nnt ihr gern einen Kommentar unter diesem Beitrag hinterlassen oder einen Stern auf GitHub vergeben. Die <code><a href=\"https:\/\/github.com\/Tronde\/rh_errata_monitor\/blob\/main\/CONTRIBUTING.md\">CONTRIBUTING.md<\/a><\/code> enth\u00e4lt Informationen, wie ihr dar\u00fcber hinaus zum Projekt beitragen k\u00f6nnt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi, in diesem Beitrag m\u00f6chte ich euch ein Projekt vorstellen, an dem ich gerade arbeite. Inspiriert ist es von meinem RHEL CVE Monitor f\u00fcr arme Admins. Doch bevor es losgeht, beginne ich mit einem Disclaimer und einem Transparenzhinweis. Anschlie\u00dfend erl\u00e4utere ich die Probleme, die ich mit diesem Projekt l\u00f6sen m\u00f6chte und gebe ein Beispiel wie<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/mein-inoffizieller-red-hat-errata-monitor\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"standard","_metis_text_length":7124,"_post_count":0,"footnotes":""},"categories":[57],"tags":[942,930,941,430,305],"class_list":["post-4423","post","type-post","status-publish","format-standard","hentry","category-wochenend-projekte","tag-advisories","tag-api","tag-errata","tag-osbn","tag-planet"],"public_identification_id":"4fed8052155e41ca9ecd0d9901a7af1b","private_identification_id":"224c0862921d43fbb35da6569defab4c","_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/4423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=4423"}],"version-history":[{"count":4,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/4423\/revisions"}],"predecessor-version":[{"id":4428,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/4423\/revisions\/4428"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=4423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=4423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=4423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}