Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: crontab: mail overzicht processen en commando's  (gelezen 1418 keer)

michiel

  • Gast
crontab: mail overzicht processen en commando's
« Gepost op: 2007/04/17, 13:48:03 »
kan ik op de één of andere manier, ik veronderstel via crontab, op het einde van elke week mijn servertje mij een mail laten sturen met alle commando's die zijn uitgevoerd en processen die die week zijn gestart?

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
crontab: mail overzicht processen en commando's
« Reactie #1 Gepost op: 2007/04/17, 16:53:00 »
Daar is wel wat op te verzinnen ja.

Dat mailen via crontab is nog het meest simpele, maar het verzamelen van alle commando's is een beetje tricky. Laten we beginnen met de vraag of je alleen interactieve commando's (dus die gebruikers hebben ingeklopt zeg maar) wilt zien of alleen de commando's die het systeem zelf heeft opgestart? Of beide natuurlijk.

Daarnaast is er nog onderscheid te maken tussen processen die daadwerkelijk zijn opgestart en welke gepland waren om opgestart te worden. Een van de redenen waarom ik dat vraag is performance. Als je echt alle processen in beeld wilt hebben dan doet dat wel een beetje een aanslag op je systeem, als je happy bent met alleen de geplande processen dan kun je een shortcut nemen.

Afijn, denk hier even rustig vast over na dan kom ik in de volgende posting hier nog wel op terug.

De oplossing waar ik aan zit te denken is om een "ps" continue te laten verversen en de output te analyseren ...
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

michiel

  • Gast
crontab: mail overzicht processen en commando's
« Reactie #2 Gepost op: 2007/04/17, 17:06:09 »
wat ik graag zou willen:
- de commando's die zijn ingevoerd door gebruikers
- de geplande processen
- de server zet zichzelf elke avond uit. Is het dan mogelijk om te kijken welke processen er worden afgesloten en die in een lijstje te steken?

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
crontab: mail overzicht processen en commando's
« Reactie #3 Gepost op: 2007/04/17, 20:52:17 »
OK, dus eigenlijk wil je alle lopende processen zien. Dat gaat je performance kosten Michiel, maar ja, dat kan gewoon de moeite waard zijn natuurlijk.

Als je geinteresseerd bent in de processen die draaien voordat je 'm uit zet (of het ding zelf uit gaat, maakt niet uit) dan kun je dat weer eenvoudiger doen

Ik denk dat we (nou ja, ik of een andere vrijwilliger) een Perl scrippie moeten maken dat braaf om de zoveel seconden even de proceslijst binnenhaalt, dat vergelijkt met de vorige keer en dan de nieuwe aan de lijst toevoegt.

Zeg maar wat je wilt, ik help je wel. Mail me maar even naar m'n persoonlijke adres via het linkje onder m'n kop ...
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

michiel

  • Gast
crontab: mail overzicht processen en commando's
« Reactie #4 Gepost op: 2007/04/17, 21:08:09 »
maar enkel de processen die 's avonds nog draaien is voldoende.
Dan krijg ik dus een lijst met ingegeven commando's
en een lijstje met de processen (7 lijstjes dus eigenlijk, 1 voor elke dag van de week)

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
crontab: mail overzicht processen en commando's
« Reactie #5 Gepost op: 2007/04/17, 22:10:41 »
OK Michiel, dat maakt het leven eenvoudiger, daar gaat-ie dan.

Allereerst gaan we een bestand maken dat we gaan gebruiken als z.g. init bestand. Vul je favoriete editor in in de regel hieronder (waar ik gedit heb gebruikt als voorbeeld):

$ sudo gedit /etc/init.d/proclist

Maak nu een bestand dat er EXACT zo uit ziet (kopieer en plak deze tekst):

#!/bin/bash

case "$1" in
  start)
       exit 1
        ;;
  stop)
        ps -ef --cols=132 > /var/log/`date +%Y-%m-%d`.procs
        exit 1
        ;;
  *)
        echo $"Usage: $0 {start|stop}"
        exit 1
esac

Sla het bestand op en voer de volgende commando's uit:
$ sudo chmod a+x /etc/init.d/proclist
$ cd /etc/rc2.d
$ ln -s ../proclist K22proclist

Nou, testen maar! Interactief kan dat met:
$ sudo /etc/init.d/proclist stop
En onder normale omstandigheden door het systeem af te sluiten

Het script maakt een bestand in /var/log dat heet YYYY-MM-DD.proc

Succes, ik hoor wel hoe het werkt!

p.s. O ja, je wilde email wellicht i.p.v. een log bestand, in dat geval kun je in het bestand
> /var/log/`date +%Y-%m-%d`.procs

vervangen door:
| mail -s `date +%Y-%m-%d` michiel

Waarbij je michiel evt. vervangt door je login naam of een echt email adres als je systeem naar buiten kan mailen.
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

michiel

  • Gast
crontab: mail overzicht processen en commando's
« Reactie #6 Gepost op: 2007/04/18, 18:06:46 »
en hoe weet ik of mijn systeem naar buiten kan mailen?
en waar kan ik dat instellen?

alvast ontzettend bedankt voor je hulp

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
crontab: mail overzicht processen en commando's
« Reactie #7 Gepost op: 2007/04/19, 15:31:21 »
Ehhhh, dat zou je moeten weten of anders wel gemerkt hebben vermoed ik ;-)

Kijk, als het voldoende is om de mail naar je gebruikersaccount op hetzelfde systeem te sturen, dan zou ik gewoon je login naam opgeven in het script en verder niet moeilijk doen.

Als het toch naar "buiten" moet, tja dan moeten we dat nog even uitvoegelen. Om het te testen kun je in elk geval het volgende doen:

mail -v -s test pietje@mijnadres.nl

Het systeem vraagt dan om wat tekst die je afsluit met Ctrl-D. Vervolgens rolt er wat tekst over je scherm en als je dat leest zie je zelf wel of het gelukt is of niet. Lukt het dan kun je dus met hetzelfde gemak een extern emailadres in het script zetten. Lukt het niet dan moeten we zien welke mail server er is geinstalleerd. Draait er sendmail of postfix bijvoorbeeld?
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl