PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : webserver testen



daemonb
17-07-2003, 09:08
Hallo,

Wie kann ich ein shellskript testen lassen, ob der webserver gestartet wurde?
Müsste ja irgendwie mit einem telnet oder so gehen oder?

Danke bis denne

DaemonB

elrond
17-07-2003, 09:37
bei meiner suse 7.3 ist ein script dabei das rcapache heißt. der Aufruf "rcapache status" gibt dann auskunft.

alternativ liefert "ps ax|grep httpd" die info...

dritte variante ist folgende:
in der httpd.cinf steht folgende zeile:


PidFile /var/run/httpd.pid

die angegebene Datei existiert nur wenn der server läuft

daemonb
17-07-2003, 09:46
hm nein, wollte nich auf das startskript angewiesen sein. Wollte wirklich checken, ob das ding erreichbar ist.
Das skript sollte halt auch von extern laufen.

Danke schonmal

DaemonB

elrond
17-07-2003, 09:57
was heißt extern? eine telnet oder besser ssh-session, also remote ?

dann geht das auf jeden fall: ps ax|grep httpd

auch die überprüfung des pid-files geht.

Falls extern etwas anderes bedeutet mach mich schlau ;)

Wenn du allerdings meinst, daß du einfach die erreichbarkeit auf dem port 80 von außen testen willst, kannst du dazu entweder einen brower wie lynx auf der shell benutzen oder mit perl oä. versuchen eine tcp-socket-verbindung zu deinem webserver aufzubauen.

daemonb
17-07-2003, 10:11
oh ich depp, mit lynx iss subba idee, macht ja das skript an sich auch, allerdings ist auf dem server kein lynx drauf, mal schauen wie ich das machen kann

elrond
17-07-2003, 10:17
du kannst auch mit telnet <hostname> 80 einen verbindungsversuch starten

daemonb
17-07-2003, 10:29
blos wie kann ich das in mein skript implementieren, weil wenn ich telnet localhost 80 eingebe, dann dauert das ja ewig und ich bekomme keinen rückgabewert.... Wie kann man das verarbeiten???

Danke

DaemonB

elrond
17-07-2003, 11:50
ups, das mit dem script hatte ich übersehen. soll wahrscheinlich regelmäßig und automatisch laufen...

ich habe hier ein stück perl-script, mit dem ich mat etwas rumprobiert habe. vielleicht kannst du's ja einfach umbauen. ichdenke, daß du nur den connect testen brauchst:



#!/usr/bin/perl -w
use IO::Socket;
use constant TIMEOUT=> 5;
use constant MYPORT => 7123;

print odbsql("select * from sys_log where log_date>'26.06.2002 15:00'");

################################################## ##################################
sub odbsql {
my $sql=$_[0];

$sock=new IO::Socket::INET( PeerAddr => "nt_hp.lbl.de",
PeerPort => MYPORT,
Proto => 'tcp',
Timeout => TIMEOUT
) or die "kann Socket-Server nicht conecten: $@\n";
$sock->autoflush;



$send="#SSTART#"."server=ntlbl08;uid=sa;pwd=db;database=transfer";
print $sock $send;
$server=<$sock>;
$server=~ s/\s//g;

if ($server eq "#OK#") {
$send="#SSQL#".$sql;
print $sock $send;
$server=<$sock>;
$server=~ s/\s//g;
}

$send="#SRES#";
print $sock $send;
$server=<$sock>;
$server=~ s/\r\n//g;
$server=~s/\|\|/\n/g;

return $server;

$sock->close();
}

daemonb
17-07-2003, 13:40
hm jaa , perl ist so eine sache :-)

naja, werde mal schauen ob ich das so mache,..... weil mein shellskript ist schon ewig lang....

jetzt zu perl naja,...

Danke aber

DaemonB

elrond
17-07-2003, 13:42
ich schau mal, ob ich's einkürzen kann ;)

edit: ich habs gekürzt:



#!/usr/bin/perl -w
use IO::Socket;
use constant TIMEOUT=> 5;
use constant MYPORT => 80;

$sock=new IO::Socket::INET( PeerAddr => "lx-ew.lbl.de",
PeerPort => MYPORT,
Proto => 'tcp',
Timeout => TIMEOUT
) or die "is tot\n";
$sock->close();
print "alles io\n";



Schreib den code in eine datei z.B. wtest.pl
Ändere den parameter PeerAddr
und dann rufst du das ding einfach auf: ./wtest.pl
ergebnis: "is tot" | "alles io"

und schon kannst du Perl und weißt ob der webserver läuft :D

pitu
17-07-2003, 17:38
Bei Nagios ist ein programm dabei, das den Check macht: check_http

Leider kann ich dir im Moment nicht das binary schicken, da ich es hier nur als Linux/Sparc binary habe.

gruss,
pitu