[bash] retour de chariot
Résolu
enyrix
Messages postés
167
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je programme un courriel qui contiendra le retour d'une commande exécuter sur un serveur. Je stocke dans une variable le retour de ma commande, mais j'aimerais conserver les retours de chariot contenu dans mon fichier log... Comment faire ?
Je programme un courriel qui contiendra le retour d'une commande exécuter sur un serveur. Je stocke dans une variable le retour de ma commande, mais j'aimerais conserver les retours de chariot contenu dans mon fichier log... Comment faire ?
MSG=$?(tail -n 20 /var/log/apache2/error.log) DATA="Voici le contenu du fichier log:\r\n\r\n$MSG"
6 réponses
-
hello
mettre entre "MSG="$?(tail -n 20 /var/log/apache2/error.log)" .. echo "$MSG"
-
Ne fonctionne pas, cela met directement la ligne en texte... Moi c'est pour mettre dans un courriel, me retourner le contenu de mon tail dedans en texte .. ça fonctionne mais il ne met pas de retour de chariot pour le contenu du fichier log, il m'envoit le contenu du fichier log tout d'un coup, c'est pas très lisible.. Il n'y aurait pas un autre moyen du genre: commmande < nomdufichieraimporter .... ? Merci pour votre aide précieuse !
-
-
-
Résolu! Trouver une solution et améliorer le script grâce à un collègue programmeur !
#!/bin/bash SUBJECT="Notification du serveur" MAILSERVER="relais.xxxx.xx" PORT="25" MAILFROM="xxxx@xxxx" MAILTO="xxxx@xxxx" #### 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 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 "Voici le contenu du fichier log:\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 sended!" echo fi
Merci à vous de m'avoir aidé! Pour info unix2dos c'est rendu tofrodos pour ubuntu... -
avec 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 $
-
Voici mon code, je sais pas trop comment je pourrais faire un echo dans ce cas:
#!/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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
j'ai modifié cette ligne
DATA="Voici le contenu du fichier log:\r\n\r\n""$MSG" -
si c'est le \r qui manque, et comme ca ?
tail -v -n 20 /var/log/apache2/error.log | sed 's/$/\r/' >&3