Maison > développement back-end > Tutoriel Python > Automatisation des résumés de mise à jour des paquets Debian avec Python et Gemini (gemini--flash)

Automatisation des résumés de mise à jour des paquets Debian avec Python et Gemini (gemini--flash)

Barbara Streisand
Libérer: 2024-12-18 14:54:11
original
337 Les gens l'ont consulté

Automating Debian Package Update Summaries with Python and Gemini (gemini--flash)

Si vous utilisez une distribution de type Debian et que vous êtes un nouvel utilisateur ou que vous commencez tout juste votre carrière en tant que administrateur système, vous connaissez probablement déjà l'importance de la mise à jour des paquets. en utilisant la mise à jour apt. Vous souhaiterez peut-être également comprendre ce que fait chaque package pour en savoir plus sur Linux. De plus, les administrateurs système (administrateurs système) doivent souvent communiquer ou documenter aux parties prenantes quelles mises à jour sont urgentes ou liées à la sécurité.

Dans cet article, je vais vous montrer comment combiner Python, la commande apt list -u et Gemini AI pour créer des résumés lisibles par l'homme des mises à jour de packages en attente.


Le but ?

  • Récupérez la liste des mises à jour en attente sur Debian à l'aide de la commande apt list -u. Remarque : Si vous le souhaitez, vous pouvez modifier la sortie en utilisant quelque chose comme :
  apt list -u | awk '{ print  }' | sed 's|/.*||'
Copier après la connexion
  • Envoyez cette liste à Gemini AI (en utilisant la bibliothèque générative de Google).
  • Utilisez l'IA pour catégoriser et résumer l'importance de chaque mise à jour de package.
  • Enregistrez les résultats dans un fichier Markdown pour faciliter le partage.

Exigences ?

  • Python 3.8
  • Clé API Google Gemini
  • Bibliothèques requises : pip installez les environs google-generativeai
  • Système basé sur Debian : ce script s'appuie sur la commande apt.

Le code

Voici une répartition de la solution en deux scripts :

apt_list.py

Ce script exécute apt list -u pour récupérer les mises à jour en attente, traite la sortie et utilise la fonction d'invite pour obtenir des résumés catégorisés de Gemini AI.

import subprocess
from utils.gemini_cfg import prompt

try:
    # Run 'apt list -u' to list upgradable packages
    result = subprocess.run(["apt", "list", "-u"], capture_output=True, text=True, check=True)
    output = result.stdout  # Get command output

    # Use the Gemini AI model to summarize the updates
    summary = prompt(output)

    # Save the AI-generated summary to a Markdown file
    with open("./gemini_result.md", "w") as file:
        file.write(summary)

    print("Summary saved to gemini_result.md")

except subprocess.CalledProcessError as e:
    print("Error while running apt list:", e)
Copier après la connexion

gemini_cfg.py

Ce script configure l'API Gemini et définit la fonction d'invite pour le contenu généré par l'IA.

import google.generativeai as genai
from environs import Env

# Load API key from .env file
env = Env()
env.read_env()
key = env("TOKEN")  # Replace with your environment variable key name

# Configure Gemini API
genai.configure(api_key=key)
model = genai.GenerativeModel("gemini-1.5-flash")

# Function to prompt Gemini AI for summaries
def prompt(content):
    message = (
        "You work as a sysadmin (Debian server infrastructure). "
        "You must create a list categorizing the importance in terms of security and priority, "
        "providing a brief summary for each package so that business managers can understand "
        "what each library is from this output of the `apt list -u` command: "
        f"{content}"
    )
    response = model.generate_content([message])
    return response.text
Copier après la connexion
  1. Exécutez le script apt_list.py : python apt_list.py
  2. Le script fait ce qui suit :

    • Récupère les mises à jour du paquet Debian en attente.
    • Transmet la liste à Gemini AI pour catégorisation et explication.
    • Enregistre la sortie générée par l'IA dans gemini_result.md.
  3. Ouvrez gemini_result.md pour voir un résumé clair et catégorisé des mises à jour pour faciliter la communication.


Exemple de sortie

Voici un exemple de ce à quoi pourrait ressembler le résumé généré :

## Debian Package Update List: Priority and Security

The list below categorizes the packages available for update, considering their importance in terms of security and business operation priority. The classification is subjective and may vary depending on your company's specific context.

**Category 1: High Priority - Critical Security (update immediately)**
- **linux-generic, linux-headers-generic:** Critical kernel updates to fix security vulnerabilities.  
- **libcurl4:** Resolves potential security issues for data transfer operations.  
...

**Category 2: High Priority - Maintenance and Stability (update soon)**

* **`e2fsprogs`, `logsave`:** Packages related to ext2/ext3/ext4 file systems. Update to ensure data integrity and file system stability. **Medium-High priority.**
...

**Category 3: Medium Priority - Applications (update as needed)**

* **`code`:** Visual Studio Code editor. Update for new features and bug fixes, but not critical for system security.
* **`firefox`, `firefox-locale-en`, `firefox-locale-pt`:** Firefox browser. Updates for security fixes and new functionalities. Priority depends on Firefox usage in your infrastructure.
...

Copier après la connexion

Conclusion

Avec un peu de Python et Gemini AI, vous pouvez automatiser et améliorer la façon dont vous communiquez les mises à jour des paquets Debian. Ce script constitue une excellente base pour intégrer l'IA dans les flux de travail de l'administrateur système. Cet article est à des fins éducatives, alors soyez attentif aux ressources de l'API Gemini, ainsi qu'à la gestion sécurisée de votre système.

Merci d'avoir lu ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal