es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guardar un telegrama continuo en diferentes carpetas

Tengo un problema con guardar la salida de Telegram. Mi problema es que desde el servidor estoy recibiendo datos cada minuto. Mi CÓDIGO MUY SIMPLE puede guardar estos datos continuos en un archivo .txt.

Pero lo que quiero es almacenar estos datos en una carpeta diaria. Con este código, mientras se ejecuta, crea una carpeta del día actual pero sigue agregando los datos del día siguiente en la misma carpeta y también en el mismo archivo.

Mi código de ejemplo es:

#!/bin/bash

foldername=$(date +%Y%m%d)
mkdir -p /home/bash-test/"$foldername"

echolog(){
    if [ $# -eq 0 ]
    then cat - | while read -r message
        do
                echo "$(date -u +"%F %T %Z";) $message" | tee -a $MY_LOG
            done
    else
        echo -n "$(date -u +'%F %T %Z'); " | tee -a $MY_LOG
        echo $* | tee -a $MY_LOG
    fi
}

telnet 197.204.12.253 1001 | echolog > /home/bash-test/"$foldername"/Ppt_$(date +%Y%m%d).txt
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema de almacenar los datos en una carpeta diaria, necesitamos modificar el código agregando la variable de fecha al nombre del archivo de salida. Aquí está el código actualizado:

    #!/bin/bash
    
    foldername=$(date +%Y%m%d)
    mkdir -p /home/bash-test/"$foldername"
    outputfile="/home/bash-test/$foldername/Ppt_$(date +%Y%m%d).txt"
    
    echolog(){
        if [ $# -eq 0 ]
        then cat - | while read -r message
            do
                    echo "$(date -u +'%F %T %Z ; ') $message" | tee -a "$outputfile"
                done
        else
            echo -n "$(date -u +'%F %T %Z') ; " | tee -a "$outputfile"
            echo "$*" | tee -a "$outputfile"
        fi
    }
    
    telnet 197.204.12.253 1001 | echolog
    

    En el código actualizado, creamos una variable outputfile que contiene la ruta completa al archivo de salida, incluida la fecha actual. Esta variable se pasa a la función echolog, que agrega los datos a este archivo utilizando el comando tee. Esto asegura que los datos se guarden en una carpeta separada para cada día.

    Ten en cuenta que también hemos eliminado la parte > /home/bash-test/"$foldername"/Ppt_$(date +%Y%m%d).txt del comando telnet, ya que ahora estamos utilizando el comando tee dentro de la función echolog para guardar los datos en el archivo de salida.

Comments are closed.