Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 4.006 pregleda

Najnovija ↓

Local mail skripta 31.08.2004. u 23:15 · pre 269 meseci #1
Pokusavam napraviti skriptu koju ce pokretati (ana)cron, a koja ce mailati output dvije komande: hddtemp (koja prikazuje temperaturu diskova. Zapravo i nije namijenjena da se na taj nacin koristi, vec kao daemon na koji se spaja telnetom, no taj me aspekt ne zanima, vec samo zelim doznati temperaturu) i smartctl (odnosno smartd daemona koji prikazuje S.M.A.R.T. informacije o disku).

No problem je sto skripta stane (odnosno mail program ceka da zavrsim sa tipkanjem poruke).

Skripta je slijedeca (sad sam stavio samo onu za hddtemp, za smartctl je gotovo identicna):

Code:

#!/bin/bash
 
MAILTO="${MAILTO:-root}"
FQDN=`hostname -f`
 
cat > /tmp/hddtmp
/usr/sbin/hddtemp /dev/hda >> /tmp/hddtmp; /usr/sbin/hddtemp /dev/hdb >> /tmp/hddtmp
/usr/bin/mail -s "Daily report for $FQDN" $MAILTO < /tmp/hddtmp
rm /tmp/hddtmp


Inace, ona linija koja pocinje sa cat, u jednoj mail skripti sam vidio da tako treba stvoriti fajl, makar mi bas nije jasno zasto, no probao sam i bez nje i uvijek ista stvar.

Probao sam i s dodavanjem tocke u praznom redu (ona je kao neki znak za slanje poruke, jel tako?), no ni to nije pomoglo.

Da li netko zna u cemu grijesim, ja stvarno ne znam...
Hvala puno.
Potpis
Ja sam fabrička greška generacije...
Re: Local mail skripta 01.09.2004. u 11:01 · pre 269 meseci #2
Citat:
AelTHeGriN:
/usr/bin/mail -s "Daily report for $FQDN" $MAILTO < /tmp/hddtmp
rm /tmp/hddtmp

Probaj....
Code:

/usr/bin/mail -s "Daily report for $FQDN" $MAILTO << EOF
`cat  /tmp/hddtmp`
EOF
rm /tmp/hddtmp

Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: Local mail skripta 01.09.2004. u 18:56 · pre 269 meseci #3
Hvala ti puno, sada sve radi:)
Moze li mi netko objasniti u cemu sam grijesio, nikad ne znam s tim EOF signalima, to me uvijek muci:)
Potpis
Ja sam fabrička greška generacije...
Re: Local mail skripta 01.09.2004. u 19:15 · pre 269 meseci #4
Signal ne mora da bude izricito EOF. Procitaj dokumentaciju za odredjeni shell. Predlazem knjigu "Unix do kraja", SAMS.
Potpis
Remember I will always love you,
As I claw your fucking throat away.
It will end no other way.
Re: Local mail skripta 01.09.2004. u 20:41 · pre 269 meseci #5
Eh, sada opet ne radi, a bilo je najnormalnije radilo. Nego, ima li nekakve veze s tim editor, ja koristim pico. Mislio sam da mozda ostavlja nekakva prazna mjesta, prazne redove, no pokusao sam poslije s geditom i ista je stvar, skripta se ne izvrsava, samo stoji.

Novi kod izgleda ovako:

Code:

#!/bin/bash

MAILTO="${MAILTO:-root}"
FQDN=`hostname -f`

/usr/sbin/hddtemp /dev/hda > /tmp/hddtmp; /usr/sbin/hddtemp /dev/hdb >> /tmp/hddtmp
/usr/bin/mail -s "HDD report for $FQDN" $MAILTO << EOF
`cat /tmp/hddtmp`
EOF
rm /tmp/hddtmp


EDIT: Evo upravo sam shvatio da se poruka normalno salje dok sam spojen na internet, a dok nisam, ne zeli ga poslati, znaci sve je u redu sa skriptom. No ne znam u cemu je problem, mozda u route-u?
Ne znam gotovo nista o sendmailu, eximu i mail aplikacijama, nikada se nisam bavio time i sve sto trebam je da mi se ovaj mejl salje u localu.
Potpis
Ja sam fabrička greška generacije...
Re: Local mail skripta 01.09.2004. u 20:59 · pre 269 meseci #6
Bez mnogo komplikovanja, dovoljno bi trebalo da je ovo:

Code:

#!/bin/bash

MAILTO="${MAILTO:-root}"
FQDN=`hostname -f`

/usr/sbin/hddtemp /dev/hda > /tmp/hddtmp
/usr/sbin/hddtemp /dev/hdb >> /tmp/hddtmp
/usr/bin/mail -s "HDD report for $FQDN" $MAILTO < /tmp/hddtmp
rm /tmp/hddtmp


I ovo tvoje bi moralo da radi, mada je

Code:
/usr/bin/mail -s "HDD report for $FQDN" $MAILTO << EOF
`cat /tmp/hddtmp`
EOF


malo rogobatno, obzirom da je dovoljno

Code:
/usr/bin/mail -s "HDD report for $FQDN" $MAILTO < /tmp/hddtmp


Mada bih ja to uradio još jednostavnije, bez tmp fajla, jer zaista nema nikakve potrebe. bash takođe treba izbeći kad se možemo izvući sa standardnom Bourne sintaksom (/bin/sh).

Code:

#!/bin/sh
MAILTO="${MAILTO:-root}"
FQDN=`hostname -f`
(/usr/sbin/hddtemp /dev/hda; /usr/sbin/hddtemp /dev/hda) | /usr/bin/mail -s "HDD report for $FQDN" $MAILTO
Potpis
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
Re: Local mail skripta 01.09.2004. u 21:04 · pre 269 meseci #7
Sad baš htedoh da dodam da ti je problem najverovatnije u mail komandi, kad videh poslednji pasus. Verovatno je problem u konfiguraciji mail servera, ili u tome što nemaš svoju mašinu u /etc/hosts. U krajnjoj liniji prvo pogledaj log mail servera kad šalješ mail u lokalu a nisi na Internetu, pa ćeš videti u čemu je problem, i zašto poruka ne stiže.

P.S. Obzirom da ova poslednja varijanta skripta sadrži samo jedan red (pajp je tvoj prijatelj ;o)), zapravo ti i ne treba skript, samo stavi tu liniju u cron (ubaci samo MAILTO i FQDN vrednosti umesto promenljivih).
Potpis
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
Re: Local mail skripta 02.09.2004. u 01:07 · pre 269 meseci #8
@random

Hvala puno, budem probao pa javim rezultate...
Inace i mislio sam da odradim ovo bez fajla u /tmp-u, no ono je i tako bila "radna" verzija skripte koja je na tome ostala upravo zbog problema s mailerom:)
Potpis
Ja sam fabrička greška generacije...
Re: Local mail skripta 02.09.2004. u 02:00 · pre 269 meseci #9
Malo sam cesljao logove (/var/log/exim4 >mainlog i rejectlog; ostali poput mail.info, mail.err u /var/log direktoriju imaju 0 bajtova) i bas i ne razumijem sto mi kazuju.
Kada je poruka uspjesno poslana pise ovo:

Code:
2004-09-02 01:53:45 1C2evB-0000Nf-8t <= [email protected] U=root P=local S=420
2004-09-02 01:53:45 1C2evB-0000Nf-8t => aelthegrin <[email protected]> R=local_user T=mail_spool
2004-09-02 01:53:45 1C2evB-0000Nf-8t Completed


A kad poruka nije ispravno poslana umjesto ovog S=420 pisu neki drugi (razliciti) brojevi.

No shvatio sam da je stvar mozda u iptables. Kada se spojim na internet imam (uz razlicita pravila naravno) i definirano INPUT i OUTPUT lanac DROP (FORWARD lanac ne koristim i on je ACCEPT).
Kad se skinem, brisu se pravila, no ostaje mi po defaultu INPUT i OUTPUT DROP. Kada promijenim na ACCEPT (OUTPUT prije svega), onda sve radi. Izgleda da je ovo vjerojatno bio problem...
Potpis
Ja sam fabrička greška generacije...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme