Aller au contenu

Retrouver ses pièces jointes noname de GMail !


fabien29200

Messages recommandés

Hello !

Si vous utilisez GMail, vous avez peut être déjà reçu une pièce jointe intitulée "noname" et dont le contenu vous a laissé perplexe.

Il s'agit apparemment d'un bug connu entre GMail et le logiciel de mails sous MacOS.

Mon chef utilisant un Mac et utilisant GMail, je soumis quotidiennement à ce problème.

J'ai écrit un petit script sans prétention qui extrait la pièce jointe du fichier noname.

Je ne l'ai testé que sur un seul fichier (GMail a du mal à considérer ces mails comme ayant des pièces jointes), donc si d'autres personnes pouvaient le tester ou même l'améliorer, ça serait bien ;)

Le script :

#!/bin/bash
eval export `grep -m 1 filename noname`
linesNumber=`wc -l noname | awk '{print $1}'`
lastLineOfFile=$((linesNumber-2))
firstLineOfFile=$((linesNumber-28))
head -n $lastLineOfFile noname | tail -n $firstLineOfFile > noname.tmp
openssl enc -d -base64 -in noname.tmp -out "$filename"
rm noname.tmp

A bientôt !

Lien vers le commentaire
Partager sur d’autres sites

Pourquoi passer par (fin du fichier -2 -((fin du fichier)-28) et non pas 26e ligne directement ?

Pas testé, mais

#!/bin/bash
eval export `grep -m 1 filename noname`
perl -e '@l=<>; print @l[26..$#l-2]' noname
openssl enc -d -base64 -in noname.tmp -out "$filename"
rm noname.tmp

devrait fonctionner.

Sinon je n'ai pas compris l'intérêt du grep :mdr2:

Lien vers le commentaire
Partager sur d’autres sites

Je suis passé par "head | tail" parce que je ne voyais pas d'autre moyen pour éliminer les x premières lignes et les y dernières lignes autrement.

Je ne connais pas perl, donc ta solution ne m'est pas venue à l'idée ;)

Pour le grep, il faut un fichier sous la main. En fait, le nom de la pièce jointe est contenue dans le fichier sous la filename="xyz"

Donc en lançant export devant cette ligne, on met tout seul le nom de fichier dans la variable filename réutilisée à la fin pour nommer le fichier final.

Merci de tes conseils !

Lien vers le commentaire
Partager sur d’autres sites

Je suis passé par "head | tail" parce que je ne voyais pas d'autre moyen pour éliminer les x premières lignes et les y dernières lignes autrement.

Je ne connais pas perl, donc ta solution ne m'est pas venue à l'idée :non:

Ben en fait je suis passé par perl parce que je ne me souvenais plus comment le faire en perl :transpi:

Un truc du genre sed -n 26,???p noname aurait été plus compréhensible, mais je suis rouillé en sed.

Pour le grep, il faut un fichier sous la main. En fait, le nom de la pièce jointe est contenue dans le fichier sous la filename="xyz"

Donc en lançant export devant cette ligne, on met tout seul le nom de fichier dans la variable filename réutilisée à la fin pour nommer le fichier final.

Ah dans ce cas, on peut cradifier un peu :

#!/bin/bash
perl -e '@l=<>; print @l[26..$#l-2]' noname > noname.tmp
openssl enc -d -base64 -in noname.tmp -out $(grep -m 1 filename noname | cut -d= -f2)
rm noname.tmp

:transpi:

On peut même faire ça en une ligne si jamais openssl accepte les arguments via le pipe (avec un "| openssl [...] -in - [...]"par exemple).

Merci de tes conseils !
À ton service :craint:

(enfin ce n'est qu'une ligne de perl en fait ^^)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...