ServerChecker
Od HLDS.pl
(Różnice między wersjami)
(→Linki) |
(→Linki) |
||
(Nie pokazano 2 wersji utworzonych przez jednego użytkownika) | |||
Linia 1: | Linia 1: | ||
+ | =Opis= | ||
'''ServerChecker''' – Skrypt napisany w Perl'u, dzięki któremu osiągniemy większy uptime serwera ;). | '''ServerChecker''' – Skrypt napisany w Perl'u, dzięki któremu osiągniemy większy uptime serwera ;). | ||
Linia 4: | Linia 5: | ||
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= | ||
+ | * [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) | ||
== Skrypt == | == Skrypt == | ||
Linia 64: | Linia 69: | ||
* [[HLDS - skrypcior]] | * [[HLDS - skrypcior]] | ||
* [[SRCDS - skrypcior]] | * [[SRCDS - skrypcior]] | ||
− | |||
− | |||
− | |||
* [http://www.int64.org/docs/gamestat-protocols/index.html Protokoły Gier] | * [http://www.int64.org/docs/gamestat-protocols/index.html Protokoły Gier] |
Aktualna wersja na dzień 20: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
- Oficjalna strona twórców skryptu, czyli klanu [Dumb] - znajdziecie tam nowszą wersję pod serwery Source i nie tylko - (wersaj pod Windows).
- Oficjalna wersja w PERL dla linuxów, autorstwa [DUMB]SGR.
- Protokół Source - do komunikacji rcon oraz sprawdzania statusu serwera (serwer query)
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 ;)