Maison > développement back-end > Golang > Comment capturer le résultat d'une commande en temps réel à partir d'un chatbot ?

Comment capturer le résultat d'une commande en temps réel à partir d'un chatbot ?

Susan Sarandon
Libérer: 2024-11-03 04:50:30
original
676 Les gens l'ont consulté

How to Capture Command Output in Real Time from a Chat Bot?

Comment capturer le résultat d'une exécution de commande en temps réel

Problème :

Quand lors de l'exécution de commandes à partir d'un chatbot, la sortie stdout est renvoyée en une seule fois à la fin de la commande. Pour obtenir une sortie en temps réel, il est nécessaire de modifier son exécution pour écrire en temps réel.

Solution proposée :

La fonction fournie collecte la sortie stdout en même temps et le renvoie une fois terminé. Nous pouvons améliorer cela en utilisant un canal pour capturer la sortie en temps réel.

Mise en œuvre :

<code class="go">package main

import (
    "os"
    "os/exec"
    "fmt"
    "bufio"
)

func main() {
    cmd := exec.Command("tail", "-f",  "/usr/local/var/log/redis.log")

    // create a pipe for the output of the script
    cmdReader, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err)
        return
    }

    scanner := bufio.NewScanner(cmdReader)
    go func() {
        for scanner.Scan() {
            fmt.Printf("\t > %s\n", scanner.Text())
        }
    }()

    err = cmd.Start()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error starting Cmd", err)
        return
    }

    err = cmd.Wait()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error waiting for Cmd", err)
        return
    }
}</code>
Copier après la connexion

En utilisant cette approche, la sortie standard de l'exécution La commande sera diffusée sur le canal de discussion en temps réel, permettant un retour immédiat et une communication interactive.

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:php.cn
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