[SuSE9] pppd & cron(tab)

Pagina: 1
Acties:

  • gavro
  • Registratie: November 2000
  • Laatst online: 21-02 23:41
Ik zit hier met een bak waar ik suse9 op heb draaien als routertje. Nu gebruik ik daar al tijden de pppd die standaard erbij zit (smpppd) voor mijn login op het PPPoE netwerk, maar het geeft van tijd tot tijd wel wat problemen:
De pppd kapt er soms gewoon mee (niet dat de lijn dropt, daarbij redailed de daemon gewoon direct).

Nu heb de simpele oplossing gekozen omdat ik er simpelweg niet anders uitkwam (kon nix duidelijks, geen howto vinden): in de cron.hourly map heb ik "ifup-dsl dsl0" geplaatst.... hij restart de daemon om de zoveel tijd dus gewoon; geen nette oplossing...
Wat ik dus wil is dat hij eerst checked of de daemon nog draait (iets met ifstatus, rcnetwork?), zoniet: dan ifup, zoja: niets aan de hand. Of dit nou komt te staan in cron.hourly of in crontab maakt mij niet uit, maar mijn vraag: hoe moet ik dit realiseren??

IF (m00?)
THEN ifup...

what is teh m00 ?

Whoo-ah.


Verwijderd

Het handigst is waarschijnlijk als je een scriptje maakt in bash/ php/ perl of wat voor scripting taal je voorkeur geniet. In dat scriptje lees je /var/run/pppd.pid uit, waarmee je de pid hebt. Dan kun je vervolgens controleren of de pppd nog draait, zo niet, start je hem opnieuw op, zowel, doe je niets.
Het controleren of pppd nog draait kan op meerdere manieren. Bij php weet ik dat je met de functie posix_kill kunt controleren of een proces nog draait, bij bash zal er waarschijnlijk ook wel een nette functie voor zijn, maar die weet ik zo niet. Wat je zou kunnen doen in bash is `ps xau | grep PID` en dan het aantal regels tellen dat je terug krijgt, met grep -c ''. Of zoiets. Maar waarschijnlijk komt er na mij een comment van iemand die zegt, nee daar moet je dat progje voor gebruiken ... ;)

  • gavro
  • Registratie: November 2000
  • Laatst online: 21-02 23:41
Ja wow thnx, stom dat ik niet had gedacht aan die PID. Ik kan gewoon checken of die file er is... als die er niet is > restart the thingy.
Ziet er nu dus gewoon heel simpel zo uit:

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash

#draait die pleuris pppd nog??
echo "checking pppd"

if [ -e /var/run/ppp0.pid ]; then
   PID=$(grep . /var/run/ppp0.pid)
   echo "pppd is still running [PID: $PID]"
   echo "no actions needed"
else
   echo "pppd down; restarting"
   /etc/sysconfig/network/scripts/ifup-dsl dsl0
   echo "restart succesful"
fi

exit 0


Works like a charm!


PS. Dit heb nu in mijn cron.hourly staan; zou ik het ook gewoon in mijn crontab kunnen zetten (maar dan zonder al die echo's...)?

[ Voor 16% gewijzigd door gavro op 25-02-2004 18:02 ]

Whoo-ah.


  • gavro
  • Registratie: November 2000
  • Laatst online: 21-02 23:41
Topic can be left alone :)
Heb het als volgt opgelost

cronjob * * * * * /root/keepalive

keeplive ziet er zo uit...
code:
1
2
3
if [ ! -e /var/run/ppp0.pid ]; then
   /etc/sysconfig/network/scripts/ifup-dsl dsl0
fi


thx cronjob

Whoo-ah.