ServerChecker

Od HLDS.pl
(Różnice między wersjami)
Skocz do: nawigacji, wyszukiwania
(Linki)
(Linki)
 
Linia 6: Linia 6:
 
Bardzo przydatne, jeżeli testujemy różne dodatki, które mają wycieki pamięci, a chcemy, aby ludzie mogli grać na serwerze bez większych przeszkód.
 
Bardzo przydatne, jeżeli testujemy różne dodatki, które mają wycieki pamięci, a chcemy, aby ludzie mogli grać na serwerze bez większych przeszkód.
 
=Linki=
 
=Linki=
* [http://www.dumbclan.co.uk/downloads/serverchecker/ Oficjalna strona] twórców skryptu, czyli klanu '''[Dumb]''' - znajdziecie tam nowszą wersję pod serwery [[Source]].
+
* [http://www.dumbclan.co.uk/downloads/serverchecker/ Oficjalna strona] twórców skryptu, czyli klanu '''[Dumb]''' - znajdziecie tam nowszą wersję pod serwery [[Source]] i nie tylko  - (wersaj pod Windows).
 +
* [http://www.dumbclan.co.uk/forum/index.php?showtopic=8721 Oficjalna wersja w PERL] dla linuxów, autorstwa '''[DUMB]SGR'''.
 
* [http://developer.valvesoftware.com/wiki/Server_Queries Protokół Source] - do komunikacji rcon oraz sprawdzania statusu serwera (serwer query)
 
* [http://developer.valvesoftware.com/wiki/Server_Queries Protokół Source] - do komunikacji rcon oraz sprawdzania statusu serwera (serwer query)
  

Aktualna wersja na dzień 21:39, 23 sty 2008

Spis treści

Opis

ServerChecker – Skrypt napisany w Perl'u, dzięki któremu osiągniemy większy uptime serwera ;).

Generalnie chodzi o to, że dzięki temu, gdy serwer przestanie odpowiadać (zawiesi się) to skrypt wykona inny odpowiedni skrypt, bądź inną komendę odpowiedzialną za restart serwera gry, bez interwencji administratora.

Bardzo przydatne, jeżeli testujemy różne dodatki, które mają wycieki pamięci, a chcemy, aby ludzie mogli grać na serwerze bez większych przeszkód.

Linki

Skrypt

 #!/usr/bin/perl -X  
 use Socket;
 
 #-----------------------------------------------------------
 # Konfiguracja (Do ustawienia według opisu)
 #-----------------------------------------------------------
 
 my $host = "x.x.x.x"; # Adres IP serwera do sprawdzania (To jest ten zbindowany).
 my $port = "27015";   # Port serwera, na którym chodzi.
 use constant CHECKEVERY => 90; # Jak często sprawdzać serwer ? (Tutaj ustawiono co 90 sekund).
 use constant TIMEOUT => 20;    # Jak długo czekać na jego odpowiedź zanim go zrestartujemy.
 
 # Poniżej podaj ścieżkę do skryptu uruchamiającego/restartującego serwer.
 # Oczywiście może to być także zwykła komenda zawierające odpowiednie opcje.
  
 my $cmd  = "/home/hlds_l/scripts/hlds restart";
 
 #-----------------------------------------------------------
 # Nie edytuj tego poniżej, chyba, że wiesz co robisz :)
 #-----------------------------------------------------------
 
 my $MAXLEN = 128;
 my $msg="\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00";
 my $RET = "NONE!";
 $SIG{ALRM} = sub { &TimeOut };
 &Start;
 sub CheckServer {
 	my $ipaddr = inet_aton($host);
 	my $portaddr = sockaddr_in($port, $ipaddr);
 	$RET = "NONE!";
 	socket(SOCKET, PF_INET, SOCK_DGRAM, getprotobyname("udp")) or die "socket: $!";
 	send(SOCKET, $msg, 0, $portaddr) == length($msg) or die "Error Sending Query.\n";
 	alarm(TIMEOUT);
 	recv(SOCKET, $RET, $MAXLEN, 0);
 	close SOCKET;
 		sleep(CHECKEVERY);
 }
 sub Start {
 	while (1) {
 		&CheckServer;
 		}
 	}
 sub TimeOut {
 if ($RET eq "NONE!") {
 	print "SERVER DOWN, RESTARTING!\n";
 		$STARTSERV = `/usr/bin/perl -w $cmd`;
 		print $STARTSERV . "\n";
 	}
 	sleep(CHECKEVERY);
 	close SOCKET;
 }

And again PawelS saves the world ;)

Zobacz też

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia