Salto de línea

Resuelto
enyrix Mensajes publicados 167 Estado Miembro -  
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   -
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

dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
hola
meter entre ""
MSG="$?(tail -n 20 /var/log/apache2/error.log)" .. echo "$MSG"
1
enyrix Mensajes publicados 167 Estado Miembro 8
 
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
Char Snipeur Mensajes publicados 10112 Fecha de registro   Estado Colaborador Última intervención   1 331
 
Hola.
Prueba el comando unix2dos, que si no está por defecto debe estar en los paquetes oficiales.
0
enyrix Mensajes publicados 167 Estado Miembro 8
 
¡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
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
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
enyrix Mensajes publicados 167 Estado Miembro 8
 
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
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
j'ai modifié cette ligne
DATA="Aquí está el contenido del archivo de registro:\r\n\r\n""$MSG"
0
enyrix Mensajes publicados 167 Estado Miembro 8
 
Cuando pongo echo DATA= echo no hay nada más en mi correo y solo se muestra en la consola...
0
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
sin eco en DATA=
0
enyrix Mensajes publicados 167 Estado Miembro 8
 
¡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
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
¿Quitando los >&3, la visualización es correcta?
0
enyrix Mensajes publicados 167 Estado Miembro 8
 
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
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
si es que falta el \r, ¿y así?
tail -v -n 20 /var/log/apache2/error.log | sed 's/$/\r/' >&3
0