Avatar billede milpoer Nybegynder
04. august 2001 - 20:24 Der er 23 kommentarer og
1 løsning

program der tjekker server status under unix (*bsd)

Hej..

Jeg sidder og skal have lavet et lille program, og jeg må være ærlig at sige, jeg ved ikke en sk.. om at programmere i c men

dog lidt i php så jeg har forsøgt at beskrive det deri. Så derfor skal jeg bruge noget hjælp.

Jeg skal bruge et lille program som gør følgende. Det bygger på kommandoen \"ps aux\" i Unix. Jeg skriver det ca. som det kunne

se ud i php, så jeg håber i kan se hvad jeg mener.

<?

// variablerne som jeg skal bruge til at kontrollere om programmerne køre eller ej.

$var1 = `ps aux | grep httpd`;
$var1 = `ps aux | grep proftpd`;
$var1 = `ps aux | grep sendmail`;
$not = \'\';

if(var1!=not) { echo \"WEB-Server is OK<br>\" ;} else { echo \"WEB-Server is temperary down.<br>\" AND

mail(\"sysadmin@domaine.dk\",\"WEB-Server is Down\",\"WEB-Server is down. Fix IT.\");};

if(var1!=not) { echo \"FTP-Server is OK<br>\" ;}
else { echo \"FTP-Server is temperary down.<br>\" AND mail(\"sysadmin@domaine.dk\",\"FTP-Server is Down\",\"FTP-Server is down. Fix

IT.\");};

if(var1!=not) { echo \"MAIL-Server is OK<br>\" ;} else { echo \"MAIL-Server is temperary down.<br>\" AND

mail(\"sysadmin@domaine.dk\",\"MAIL-Server is Down\",\"MAIL-Server is down. Fix IT.\");};

?>

Programmet skal køre hver 30 time og hvis det ikke køre skal det sende en mail til sysadmin...

---------

Håber der er en der kan hjælpe. Jeg ved ikke om det kan lade sig gøre, men jeg kunne forstille mig noget med en konfig fil,

hvor man kan specificere hvilket den skal søge efter.

Håber nogle kan hjælpe mig..

evt. bedre forslag modtages..

Jeg vil selvfølgelig gerne have koden og selv kompilere, men jeg ser gerne det virke på forhånd.

Gør mig en tjeneste, skriv hvis i ikke regner med at jeg kan få nogle til at lave dette lille program for mig, for blot de

100 point, så må jeg jo igang selv, for jeg vil ikke betale nogen for det..

Håber der er hjælp at hente.

Hilsen
Tomas.


Avatar billede drean Nybegynder
05. august 2001 - 01:53 #1
Bare et lille forslag, hvis jeg skulle lave det, så ville jeg nok lave et shell script.
Ikke fordi jeg har så forfærdelig meget forstand på det Linux/Unix sjov, men jeg skulle mene det kune lade sig gøre, og så er det jo også nemt at ændre, istedet for en fil som er compilet.

MvH

DreaN
Avatar billede kamikaze Nybegynder
05. august 2001 - 12:34 #2
drean >> Er bare nysgerrig, hvordan vil du gøre i et shell script??? Og hvordan kører man et shell-script hver 30. time??? (Bare sådan i grove træk)
Avatar billede milpoer Nybegynder
05. august 2001 - 17:11 #3
Hvordan laver man et shell script ?
Avatar billede jelzin101 Praktikant
05. august 2001 - 17:15 #4
et shell script er bare en fil hvor der står komandoer i, denne laver du så om til en exekverbar fil og voila.
Avatar billede milpoer Nybegynder
05. august 2001 - 17:17 #5
hvordan lavet det om til en exekverbar fil og hvordan skal filen se ud inden den laves om, hvis den skal gøre det ovenstående ?
Avatar billede jelzin101 Praktikant
05. august 2001 - 17:22 #6
ok en lille opskrift :

>>leg root :

cd bin
ed mitscript

>>så svares der ?mitscript

>>så skriver du :
a

>>så skriver du:
echo Dette er mit script (på en ny linie)
>>tryk esc
>>skriv
w
>>så får du at vide at filen indholder 24 tegn.
>>skriv
q
>> så er du tilbage i shell\'en
>> så skriver du :
chmod +x mitscript
rehash

>>så har du et fungerende shellscript.
Avatar billede milpoer Nybegynder
05. august 2001 - 17:24 #7
Maskinen er lige nede lige nu.. Jeg prøver senere hvis det virker for du pointne..

Hvordan sætter man den så til at exekver hver 30. min. ??
Avatar billede jelzin101 Praktikant
05. august 2001 - 17:25 #8
jeg skal lige have slået det op :)
Avatar billede milpoer Nybegynder
05. august 2001 - 17:27 #9
hvor slår du ting som dette op ?
Avatar billede jelzin101 Praktikant
05. august 2001 - 17:45 #10
jeg har engang købt en bog om unix.
Avatar billede jelzin101 Praktikant
05. august 2001 - 17:48 #11
ok det eneste det lille ovenstående script gør er at skrive
dette er mit script.

hvordan man får den til at køre php hmm. ved jeg ikke helt. men hvis det kan vente 1-2 dage så snakker jeg med en unix guru om det.
Avatar billede milpoer Nybegynder
05. august 2001 - 17:56 #12
Ok. det er helt i orden..
Avatar billede henrik_ffc Nybegynder
05. august 2001 - 21:04 #13
Elementært kære milpoer.

Du kompilerer PHP i CGI versionen, så kan du eksekvere php-scripts direkte fra prompten.
Dette script sætter du så et cronjob til at udføre fx hvert 30. minut

Du kan evt indsætte følgende i din /etc/crontab :
*/30 * * * * /usr/bin/php -q /sti/til/script/upcheck.php

Derefter kører du en \"crontab /etc/crontab\" for at opdatere cron-tabellen.
Og vupti så kører scriptet hvert 30. minut.....
Avatar billede morten2 Nybegynder
06. august 2001 - 01:44 #14
Tja jeg ville skrive det i perl hvis det var mig.
Avatar billede morten2 Nybegynder
06. august 2001 - 01:49 #15
Perl:

$var1 = `ps aux | grep httpd`;
if($var1 eq \"\")
{
  print \"web server down!\";
  system \'mailx -s \"web server down\" sysadmin@perl.com\';
}
Avatar billede morten2 Nybegynder
06. august 2001 - 01:51 #16
og den mere resolute udgave :-)

Perl:

$var1 = `ps aux | grep httpd`;
if($var1 eq \"\")
{
  print \"web server down!\";
  system \'mailx -s \"shit happens\" sysadmin@perl.com\';
  system \"reboot -now\";
}
Avatar billede milpoer Nybegynder
06. august 2001 - 10:44 #17
Skrive det i perl og stadig have det som shell script eller hva ?
Avatar billede morten2 Nybegynder
06. august 2001 - 12:02 #18
Hvis du programere det I Perl så behøver du ikke noget shell script.

Hvis du ikke kender Perl så se www.perl.com.
Avatar billede milpoer Nybegynder
15. august 2001 - 12:23 #19
jeg kan ikke få den til at sende den mail..

jeg bruger

system \'mail\' men hvordan skal det skrives..

Avatar billede morten2 Nybegynder
15. august 2001 - 12:28 #20
har du mail eller mailx installeret?

prøv fx at skrive i en shell

  echo \"hallo world\" | mailx -s test din@email.dk

eller

  echo \"hallo world\" | mail -s test din@email.dk

og se om du får en mail
Avatar billede morten2 Nybegynder
15. august 2001 - 12:31 #21
hvis det virker så prøv

system \'mail(x) -s \"shit happens\" sysadmin@perl.com < /dev/null\';
Avatar billede milpoer Nybegynder
15. august 2001 - 12:32 #22
det virker fint det første du skrev

echo \"hallo world\" | mail -s test din@email.dk

Avatar billede morten2 Nybegynder
15. august 2001 - 12:39 #23
$var1 = `ps aux | grep httpd`;
if($var1 eq \"\")
{
  print \"web server down!\";
  system \'mailx -s \"web server down\" sysadmin@perl.com << /dev/null\';
}

eller den pænere version

$var1 = `ps aux | grep httpd`;
if($var1 eq \"\")
{
  print \"web server down!\";
  open(MAIL,| \'mail -s \"web server down\" sysadmin@perl.com\') || die(\"Unable to run mail\");
  print MAIL \"MAIL BODY\";
  close(MAIL);
}

Avatar billede milpoer Nybegynder
15. august 2001 - 12:41 #24
du har sådan set scoret dig pointne ... Here you go.
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