» »

Pošiljanje datotek na mail - skripta

Pošiljanje datotek na mail - skripta

purki ::

Rad bi poslal vse datoteke - ena po ena - na moj mail. Konkretno so to slike JPG.
Kar bi rad je pomoč pri izdelabi bash skripte.

Datoteko sedaj pošiljam na sledeč način

#!/bin/sh
# naredimo MIMO fajl z priponko
DANES=`date +%d.%m.%y`
cd /tmp
rm out.mime
/opt/bin/mpack -s ${DANES} -o /tmp/out.mime /tmp/motion.jpg
# posljemo
/opt/sbin/sendmail krnekam@gmail.com -f odmene@gmail.com < /tmp/out.mime

To skripto bi rad modificiral na sledeč način
1) rm out.mime se pobriše samo če obstaja
2) mpack in sendmail naj bi delala v zanki in sicer naj bi obdelala vse jpg datoteke v /tmp in ne samo motion.jpg
3) rezultati mpack-a in sendmail-a naj se vpisujejo v log file
...

kekz ::

1) rm out.mime se pobriše samo če obstaja


out.mime se najbrž itak pobriše samo, če obstaja? Če ne obstaja, se najbrž ne more pobrisati, ali kako :\ ??

Neko komando nad datotekami v zanki je najbolj simpl narediti s find:

find /tmp -name "*.jpg" -maxdepth 1 -exec [tvoja komanda nad datoteko {}] \;

find {} nadomesti z imenom datoteke, katero najde v posamezni iteraciji.

purki ::

To itak samo ker mi potem stalno teži v logih "File not found"

Torej tako misliš

find /tmp -name "*.jpg" -maxdepth 1 -exec [ /opt/bin/mpack -s ${DANES} -o /tmp/out.mime /tmp/find{} && /opt/sbin/sendmail krnekam@gmail.com -f odmene@gmail.com < /tmp/out.mime];

Zgodovina sprememb…

  • spremenilo: purki ()

kekz ::

Aha, potem imaš več možnosti (kot ponavadi):

1. rm -f fajl
2. rm fajl 2> /dev/null
3. if [ -f fajl ]; then rm fajl; fi
...

kekz ::

Tisti [ ] odstrani. Komando daš (če je komplicirana) samo v narekovaje ali celo brez (če je enostavnejša, potem mora biti na koncu \;).
Jaz sem napisal [...] kot zadevo, ki jo moraš zamenjati s svojo komando (vključno z oklepaji):

find /tmp -name "*.jpg" -maxdepth 1 -exec "/opt/bin/mpack -s ${DANES} -o /tmp/out.mime {} && /opt/sbin/sendmail krnekam@gmail.com -f odmene@gmail.com < /tmp/out.mime" ;

find najbrž ne bo prebavil tako kompliciranega konstrukta. S tem ima ponavadi nekaj težav.
Ali boš moral poenostaviti komando, ali pa jo spraviti v proceduro ali drugo skripto, in potem samo tisto kličeš iz find-a.

Drugi način je s for zanko - slabost je, da ti bo crknilo, če bo preveč fajlov - predolga vrastica pride
for datoteka in `ls /tmp/*.jpg`
do
tukaj_je_lahko_tudi_komplicirana_komanda ${datoteka}
done

Tretji način je z while zanko:
ls /tmp/*.jpg | while read datoteka
do
tukaj_je_lahko_tudi_komplicirana_komanda ${datoteka}
done

Zgodovina sprememb…

  • spremenilo: kekz ()

kekz ::

Sicer pa jaz pošiljam datoteke (priponke) z nail, oz. zdaj se temu reče mailx.

mailx -s "Subject" -a fajl prejemnik@nekje

purki ::

@kekz: Probal sem NAIL

A kot kaže moram nekje dobiti nek certifikat

[admin@(none) /opt]$ nail -s "subjekt" -a /tmp/harddisk/kamera/motion.jpg -v mojmail@gmail.com < /tmp/harddisk/out.mime
Resolving host smtp.gmail.com . . . done.
Connecting to 64.233.183.109 . . . connected.
220 mx.google.com ESMTP y24sm25503441nfb
>>> EHLO (none)
250-mx.google.com at your service, [193.77.251.151]
250-SIZE 20971520
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
>>> STARTTLS
220 2.0.0 Ready to start TLS
Error with certificate at depth: 0
issuer = /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certificat
ion Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@th
awte.com
subject = /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
err 20: unable to get local issuer certificate
Continue (y/n)? could not initiate SSL/TLS connection: error:14090086:SSL routin
es:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
"/usr/local/root/dead.letter" 5444/395543
. . . message not sent.
[admin@(none) /opt]$
[admin@(none) /opt]$

kekz ::

Očitno tvoj smtp server zahteva tls sejo.
Če imaš možnost, uporabi drug ali svoj smtp server.

Drugače si boš moral skonfigurirati tls za smtp. Pri tem res rabiš certifikat, če server zahteva klientovo avtentikacijo.
Tega jaz še nisem počel.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

LinkedIn spam?

Oddelek: Loža
112468 (1900) kunigunda
»

Pomoč pri izdelavi Python skripte (strani: 1 2 )

Oddelek: Programiranje
615409 (4055) BigWhale
»

[Ubuntu server] mail poslan iz serverja zazna kot vsiljeno pošto (strani: 1 2 )

Oddelek: Omrežja in internet
798618 (7588) shorvat
»

Linux sendmail - Problem !!!??

Oddelek: Omrežja in internet
151887 (1648) n0name
»

[UNIX] arg list too long

Oddelek: Programiranje
331854 (1109) bijonda

Več podobnih tem