Salto de línea

Resuelto
Hola,
Programa un correo electrónico que contendrá el retorno de una orden ejecutada en un servidor. Guardo en una variable el retorno de mi comando, pero me gustaría conservar los retornos de carro contenidos en mi archivo de registro... ¿Cómo hacerlo?

MSG=$?(tail -n 20 /var/log/apache2/error.log) DATA="Aquí está el contenido del archivo de registro:\r\n\r\n$MSG"

6 respuestas

  1. Colaborador
    hola
    meter entre ""
    MSG="$?(tail -n 20 /var/log/apache2/error.log)" .. echo "$MSG"
    1
    1. No funciona, eso pone la línea directamente en texto... Yo lo uso para meterlo en un correo, devolverme el contenido de mi tail dentro en texto... funciona pero no coloca saltos de línea para el contenido del archivo de log, me envía todo el contenido del archivo de log de golpe, no es muy legible... ¿No habría otra forma, por ejemplo: comando < nombredearchivoparaimportar .... ? ¡Gracias por vuestra ayuda valiosa!
      0
    2. Colaborador
      Hola.
      Prueba el comando unix2dos, que si no está por defecto debe estar en los paquetes oficiales.
      0
  2. Colaborador
    con des " ça fonctionne, montre ton code
    $ tail a2 aaa aaa bbb b b b ccc ccc $ MSG="$(tail a2)" $ echo $MSG aaa aaa bbb b b b ccc ccc $ echo "$MSG" aaa aaa bbb b b b ccc ccc $ $ DATA="Voici le contenu du fichier log:\r\n\r\n""$MSG" $ echo -e "$DATA" Voici le contenu du fichier log: aaa aaa bbb b b b ccc ccc $
    0
    1. Aquí está mi código, no sé muy bien cómo podría hacer un echo en este caso:

       #!/bin/bash MSG="$(tail -n 20 /var/log/apache2/error.log)" DATA= echo "Voici le contenu du fichier log:\r\n\r\n$MSG" SUBJECT="Notification du serveur" MAILSERVER="XXXXXXXX" PORT="25" MAILFROM="XXXXXXXXX" MAILTO="XXXXXXXXXXX" #### SEND MAIL via RAW TCP ####### echo echo "Connecting to $MAILSERVER on Port $PORT"; echo "Please wait ... " echo exec 3<>/dev/tcp/$MAILSERVER/$PORT if [ $? -ne 0 ] ; then echo echo "ERROR: Cannot connect to the Mail Server"; echo "Please check the servername and/or the port number" exit fi echo -en "HELO mail.email.com\r\n" >&3 echo -en "MAIL FROM:$MAILFROM\r\n" >&3 echo -en "RCPT TO:$MAILTO\r\n" >&3 echo -en "DATA\r\n" >&3 echo -en "Subject: $SUBJECT\r\n\r\n" >&3 echo -en "$DATA\r\n" >&3 echo -en ".\r\n" >&3 echo -en "QUIT\r\n" >&3 cat <&3 echo echo echo "Mail sended!" echo 
      0
      1. Colaborador
        j'ai modifié cette ligne
        DATA="Aquí está el contenido del archivo de registro:\r\n\r\n""$MSG"
        0
        1. Cuando pongo echo DATA= echo no hay nada más en mi correo y solo se muestra en la consola...
          0
        2. Colaborador
          sin eco en DATA=
          0
        3. ¡No más! :(
          MSG=$(tail -n 20 /var/log/apache2/error.log) DATA="Este es el contenido del archivo de registro:\r\n\r\n""$MSG"
          0
        4. Colaborador
          ¿Quitando los >&3, la visualización es correcta?
          0
        5. no realmente.. eso envía más el correo y da un error:
          500 5.5.1 Unknown command "Voici le contenu du fichier log:" specified 500 5.5.1 Unknown command "" specified


          Estoy intentando otra forma que tampoco funciona jaja no más...
          0
      2. ¡Resuelto! ¡Encontrar una solución y mejorar el script junto con un colega programador!

         #!/bin/bash SUBJECT="Notificación del servidor" MAILSERVER="relais.xxxx.xx" PORT="25" MAILFROM="xxxx@xxxx" MAILTO="xxxx@xxxx" #### ENVIAR MAIL via RAW TCP ####### echo echo "Conectando a $MAILSERVER en el puerto $PORT"; echo "Por favor espere ... " echo exec 3<>/dev/tcp/$MAILSERVER/$PORT if [ $? -ne 0 ] ; then echo echo "ERROR: No se puede conectar al servidor de correo"; echo "Por favor verifique el nombre del servidor y/o el número de puerto" exit else echo -en "HELO mail.email.com\r\n" >&3 echo -en "MAIL FROM:$MAILFROM\r\n" >&3 echo -en "RCPT TO:$MAILTO\r\n" >&3 echo -en "DATA\r\n" >&3 echo -en "Subject: $SUBJECT\r\n\r\n" >&3 echo -en "Aquí está el contenido del archivo de registro:\r\n\r\n" >&3 tail -v -n 20 /var/log/apache2/error.log | while read line do echo -en "$line\r\n" >&3 done echo -en ".\r\n" >&3 echo -en "QUIT\r\n" >&3 cat <&3 echo echo echo "Mail enviado!" echo fi 


        Gracias a ustedes por ayudarme! Para info unix2dos se convirtió en tofrodos para Ubuntu...
        1
        1. Colaborador
          si es que falta el \r, ¿y así?
          tail -v -n 20 /var/log/apache2/error.log | sed 's/$/\r/' >&3
          0