Portál AbcLinuxu, 10. května 2025 07:36

Dotaz: script -email

20.6.2006 11:22 green
script -email
Přečteno: 262×
Odpovědět | Admin
Zdravim, mam router ze ktereho lze posila maily pres mini_sendmail :

priklad :echo -e "From:krakonosovo@blahblah.cz \nSubject: xx \nTextzpravy... " | mini_sendmail -ssmtp.xxx.cz adresa@xxx.cz

No a chci se zeptat zda-li by sel napsat skriptik abych si tento tvar nemusel pamatovat a kterej by se me postupne ptal na odkoho, komu ,predmet,telozpravy a nasledne odeslal email?

diky
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.6.2006 12:01 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: script -email
Odpovědět | | Sbalit | Link | Blokovat | Admin
Šel, použiješ příkaz read (viz help read).
20.6.2006 14:41 zelial | skóre: 21
Rozbalit Rozbalit vše Re: script -email
presne. ten python tady dole by v bashi mohl vypadat treba takhle:
#!/bin/bash

echo -n "From: " ; read from
echo -n "To: " ; read to
echo -n "Subject: " ; read subject
echo "Body: "
while true
do
    read line
    if [ "${line}_" == "._" ] ; then break; fi
    body=$body$line"\n"
done

echo -e "From:${from} \nSubject:${subject} \n${body} " | mini_sendmail -ssmtp.xxx.cz ${to}
akorat se zadavani tela mejlu ukoncuje teckou, panc mi a) read zere mezery b) jsem uz nekde jinde ukoncovani teckou videl
20.6.2006 12:09 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: script -email
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předpokládám, že se asi jedná o ten tvůj router wl-500gx s nějakým ořízlým linuxem 2.4.20, takže řešení v Pythonu asi psát nemám, že? ;-)
20.6.2006 12:14 green
Rozbalit Rozbalit vše Re: script -email
jeheee :) ty si to pamatujes jojo to je presne ten router. No jedine ze bych si pythona nainstalil ten tusim k dispozici je ale nemam ho testnutyho a nejakej skriptik jen v bashi by na to nestacil?:) Si teda za vymyslim ;)
20.6.2006 12:45 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: script -email
:-)
Samozřejmě, že skript v bashi by bohatě stačil, ale od toho jsou tu jiní ;-)
V Pythonu by to šlo třeba takhle:
#!/usr/bin/env python
import subprocess

od_koho = raw_input('Od koho: ')
komu = raw_input('Komu: ')
predmet = raw_input('Predmet: ')
print 'Telo zpravy:'
telo_zpravy = ""
while True:
    line = raw_input()
    if line == ' ': break
    telo_zpravy += line + '\n'

stream = "From:" + od_koho + "\n"
stream += "Subject:" + predmet + "\n"
stream += telo_zpravy + "\n"
print stream
command = ['mini_sendmail', '-ssmtp.xxx.cz', komu]
prg = subprocess.Popen(command, stdin = subprocess.PIPE)
prg.stdin.write(stream)
prg.stdin.close()
prg.wait()
Tělo mailu může být víceřádkové. Ukončuje se zadáním mezery.
Ale na ten router se to nehodí.
20.6.2006 12:50 green
Rozbalit Rozbalit vše Re: script -email
fiiiihaaaaaaaaaaa to je rychlost;) proc myslis ze se to na router nehodi??:( urcite hned zkusim jestli neni potreba v pythonu nastavovat neco extra. diky
20.6.2006 13:09 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: script -email
To bych se hrozně divil, kdyby to fungovalo. Tady je pro jistotu varianta, která si vystačí i se starší verzí pythonu
#!/usr/bin/env python
import os

od_koho = raw_input('Od koho: ')
komu = raw_input('Komu: ')
predmet = raw_input('Predmet: ')
print 'Telo zpravy:'
telo_zpravy = ""
while True:
    line = raw_input()
    if line == ' ': break
    telo_zpravy += line + '\n'

stream = "From:" + od_koho + "\n"
stream += "Subject:" + predmet + "\n"
stream += telo_zpravy + "\n"

command = 'mini_sendmail -ssmtp.xxx.cz ' + komu
neco = os.popen(command, 'w')
neco.write(stream)
neco.close()
ale nedal bych za to ani zlámanou grešli.
20.6.2006 13:12 green
Rozbalit Rozbalit vše Re: script -email
jojo diky jen nevim jak zprovoznit ten python:(

-sh: /usr/local/sbin/mailik: /usr/bin/env: bad interpreter: No such file or directory
20.6.2006 13:34 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: script -email
Aha, jasně - python tam sice je, ale zato chybí příkaz "env" (který je celkem zbytečný). Takže jen první řádek změň na
#!/usr/bin/python
nebo /usr/local/bin/python nebo bůhvíkde vlastně je.
20.6.2006 13:37 green
Rozbalit Rozbalit vše Re: script -email
jojo to uz je lepsi jen to krici na te radce 11 to if se mu nejak nelibi:(
20.6.2006 13:44 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: script -email
A co přesně to píše? Zrovna ten řádek s tím "if" se mi zdá celkem bezproblémový. Nerozhodilo se formátování? Pojď na ICQ (235664531) nebo mi napiš mail (honza@dp.fce.vutbr.cz), vyřešíme to a já sem pak napíšu nějaký závěr (nejspíš že to nepude).
20.6.2006 13:54 green
Rozbalit Rozbalit vše Re: script -email
oki ICQ
20.6.2006 13:13 green
Rozbalit Rozbalit vše Re: script -email
Jinak kdyz zadam pyhon tak se asi do nej dostanu jen zas neznam prikazy ja to soubor mailik spustit
20.6.2006 13:22 green
Rozbalit Rozbalit vše Re: script -email
dalsi muj pokus :

python mailik File "mailik", line 11 if line == ' ': break ^ SyntaxError: invalid syntax :(
20.6.2006 15:26 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: script -email
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takže nakonec se to povedlo napsat a sprovoznit v Pythonu, tady je výsledek:
#!/opt/bin/python
import subprocess

od_koho = raw_input('Od koho: ')
komu = raw_input('Komu: ')
predmet = raw_input('Predmet: ')
print 'Telo zpravy:'
telo_zpravy = ""
while True:
    line = raw_input()
    if line == ' ': break
    telo_zpravy += line + '\n'

stream = "From: " + od_koho + "\n"
stream += "Subject: " + predmet + "\n"
stream += telo_zpravy.rstrip()
print '-' * 20
print stream
print '-' * 20
print 'Odesilam ...'
command = ['mini_sendmail', '-ssmtp.xxxx.cz', komu]
prg = subprocess.Popen(command, stdin = subprocess.PIPE)
prg.stdin.write(stream)
prg.stdin.close()
prg.wait()
K mému velkému překvapení v té krabičce běží aktuální verze Pythonu (2.4.3.) úplně bez problémů. Je k dispozici (asi celá) standardní knihovna, takže není vůbec potřeba se nějak omezovat. Cesta k pythonu je
/opt/bin/python
což bylo asi jediné, co jsem musel změnit. Děkuji greenovi za spolupráci!
20.6.2006 16:29 green
Rozbalit Rozbalit vše Re: script -email
Veskere diky patri tobe johny. dik moc

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.