Avatar billede thezub Nybegynder
16. juni 2004 - 11:20 Der er 8 kommentarer og
1 løsning

shell script der kan maile en bruger hvis mailbox er fyldt

Hej

Jeg ved lidt om shell scripts, men ikke nok til at få det her til at spille. Jeg kører RedHat med bash shell. Og jeg vil godt lave et shell script der checker filerne /var/mail og hvis en af filerne er størrere end 10MB f.eks så sender den en mail til pågældende bruger, at hans mailbox er ved at være fyldt.

Nogen der kan have nogle forslag til hvordan det gøres...

har fundet frem til at "wc -c mailfil" giver filens størrelse i bytes, men jeg aner ikke hvordan jeg får til at sige if størrere eller mindre end then do mail else exi

Jacob
Avatar billede strych9 Praktikant
16. juni 2004 - 13:35 #1
#!/bin/sh
folder=/var/mail/

# gentag for alle filer i folder variabel
for i in `ls -1 ${folder}`
do
# size skal kun indeholde en integer
size=`wc -c $i`
size=${size%%${i}}
# sammenlign size i bytes med 10mb
if [ ${size} -gt 10485760 ]
then
  echo $i # erstat med hvad der skal ske hvis filen er større. Husk at ${i} er filnavn og dermed også brugernavn?
else
  echo "whatever"
fi
done
Avatar billede strych9 Praktikant
16. juni 2004 - 13:38 #2
hvis du vil have forklaring på nogle af linjerne så sig til....
Avatar billede thezub Nybegynder
14. juli 2004 - 10:54 #3
Hej strych9 du må undskylde den lange svartid, jeg har ikke fået checket op det det. Sorry!! Jeg har prøvet det af, men scriptet kommer med denne fejl ved hver mailfil:

wc: jacob: No such file or directory
mailsize: line 11: [: -gt: unary operator expected

Kan du svare på hvad der går galt ?

Mvh Jacob
Avatar billede thezub Nybegynder
14. juli 2004 - 10:54 #4
ps, jeg har selvfølgelig mine mailfiler liggende i /var/mail :-)
Avatar billede thezub Nybegynder
14. juli 2004 - 10:59 #5
Hej, jeg fjernede ${folder} og så virkede det, takker... måske er det ikke helt rigtigt, men det virker til mit behov. tak tak
Avatar billede strych9 Praktikant
14. juli 2004 - 11:26 #6
aah ok en lille bug.. så du rettede for i in `ls -1 ${folder}` til at være for i in `ls -1 /var/mail`?
Det kan man gøre, men så skal scriptet køres i /var/mail

Bedre løsning måske:
Ret size=`wc -c $i` til size=`wc -c $folder/$i` og så skulle det funke som cron job også. Beklager fejlen. Det var bare et hurtigt utestet script..
Avatar billede strych9 Praktikant
14. juli 2004 - 11:28 #7
fejlen i scriptet var at den forsøger at lave size=`wc -c $i` hvilket vil sige wc -c jacob, og det er jo svært når scriptet ikke kender jacob filens absolutte placering, men kun den relative.
Avatar billede thezub Nybegynder
14. juli 2004 - 11:30 #8
nej, jeg fjernede bare  ${folder} og skrev intet, ja så skal scriptet godtnok køres fra /var/mail, tror jeg vil gøre som du foreslår med wc -c $folder/$i.

Jacob
Avatar billede strych9 Praktikant
14. juli 2004 - 11:35 #9
jeps, smid scriptet i /usr/sbin og så kør det fra en folder som ikke er /var/mail - bedste måde at teste at det kan fungere som cron også =) Held og lykke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester