Skocz do zawartości
Hadouken

Prośba o poprawienie skryptu

Polecane posty

Witam, mam taki skrypt którego zadaniem ma być restartowanie serwera hlds. Chodzi o to że ten skrypt nie do końca mi działa, a wygląda tak


<?php 
$polaczenie = ssh2_connect("ip", "22"); 
ssh2_auth_password($polaczenie, "user", "haslo"); 
if ($polaczenie) 
{ 
ssh2_exec("$polaczenie, cd ~/1"); 
ssh2_exec("$polaczenie, killall hlds_run"); 
ssh2_exec("$polaczenie, screen -A -m -d ./hlds_run -game cstrike +port 27010 +maxplayers 16 +map de_dust +exec server.cfg"); 
ssh2_exec("$polaczenie, logout"); 
echo("<font color='green'>Zresetowano</font>"); 
} 
else 
{ 
echo("<font color='red'>Nie połączono</font>"); 
} 
print_r($polaczenie); 
var_dump($polaczenie); 
?> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

[url="topic/22319-prosba-o-prosty-skrypt-logowania-php/"]

Ja się na tym nie znam a potrzebuje tego, proszę o pomoc. Na serwerze mam Debiana 5.0 Apache 2, php 2, libssh2-1, libssh2-1-dbg, libssh2-1-de.

Pożniej ktoś powiedział że polecenia mają być w 1 ssh2_exec i dał taki przykład

$tmp = ssh2_exec($polaczenie, 'kill -9 `ps auxw | grep hlds_run | grep -v grep | grep -v SCREEN | awk \'{print $2}\'` 
screen -A -m -d -S serwer ./hlds_run -game cstrike +port 27010 +maxplayers 16 +map de_dust +exec server.cfg 
screen -wipe -logout'); 
stream_set_blocking($tmp, true); 

echo 'Serwer zostal uruchomiony ponownie';

ale nie wiele z tego zrozumiałem i przerobiłem skrypt tak:

<?php 
$polaczenie = ssh2_connect("ip", "22"); 
ssh2_auth_password($polaczenie, "user", "password"); 
if ($polaczenie) 
{ 
ssh2_exec($polaczenie, "cd cs | killall hlds_run | screen -A -m -d ./hlds_run -game cstrike +port 27010 +maxplayers 16 +map de_dust -dev -condebug +exec server.cfg 
|logout"); 
echo("<font color='green'>Zresetowano</font>"); 
} 
else 
{ 
echo("<font color='red'>Nie połączono</font>"); 
} 
print_r($polaczenie); 
var_dump($polaczenie); 
?> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

no ale to też nic nie dało.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ssh2_exec("$polaczenie, cd ~/1");

ssh2_exec("$polaczenie, killall hlds_run");

ssh2_exec("$polaczenie, screen -A -m -d ./hlds_run -game cstrike +port 27010 +maxplayers 16 +map de_dust +exec server.cfg");

ssh2_exec("$polaczenie, logout");

 

Zerknij jak to w drugim przykładzie, gdzie postawiłeś cudzysłowy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No to mam coś takiego:

<?php 
$polaczenie = ssh2_connect("ip", "22"); 
ssh2_auth_password($polaczenie, "user", "password"); 
if ($polaczenie) 
{ 
ssh2_exec($polaczenie, "cd cs | killall hlds_run | screen -A -m -d ./hlds_run -game cstrike +port 27010 +maxplayers 16 +map de_dust -dev -condebug +exec server.cfg 
|logout"); 
echo("<font color='green'>Zresetowano</font>"); 
} 
else 
{ 
echo("<font color='red'>Nie połączono</font>"); 
} 
print_r($polaczenie); 
var_dump($polaczenie); 
?> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

ale to dalej nie restartuje mi serwera

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

<?php

##### Poł±czenie ###############
$server = "127.0.0.1"; // IP
$port = "22"; // Port
$login = "root" // Login
$password = "haslo"; // Haslo
#################################
#
######### Ustawienia #############
$directory = "/home/server/"; // Folder
$screen = "hlds_1": // Nazwa Screena
$game = "cstrike"; // Gra
$ip = "127.0.0.1"; // IP SRV
$port = "27016"; // SRV PORT
$lan = "1" // Server lan 1/0
$maxplayers = "10"; // Sloty
$map = "de_dust2"; // Mapa

######### Command Exec #############

$command = "cd $directory; screen -A -m -d -S $screen ./hlds_run -game $game +ip $ip +port $port +sv_lan $lan -nomaster +maxplayers $maxplayers +map $map"; // Start
$connection = ssh2_connect($server, $port); // Laczenie
ssh2_auth_password($connection, $login, $password); // Logowanie
$stream = ssh2_exec($connection, $command); // Exc

?>

 

Może Ci w czymś pomorze ; ))

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

przerabiam to sobie tak:

<?php

##### Poł±czenie ###############
$server = "ip serwera"; // IP
$port = "22"; // Port
$login = "user name" // Login
$password = "password" // Haslo
#################################
#
######### Ustawienia #############
$directory = "/home/username/folder z hlds/"; // Folder
$screen = "hlds_1": // Nazwa Screena
$game = "cstrike"; // Gra
$ip = "188.116.33.41"; // IP SRV
$port = "port serwera"; // SRV PORT
$lan = "0" // Server lan 1/0
$maxplayers = "23"; // Sloty
$map = "de_dust2"; // Mapa

######### Command Exec #############

$command = "cd $directory; screen -A -m -d ./hlds_run -game $game +ip $ip +port $port +sv_lan $lan +maxplayers $maxplayers +map $map"; // Start
$connection = ssh2_connect($server, $port); // Laczenie
ssh2_auth_password($connection, $login, $password); // Logowanie
$stream = ssh2_exec($connection, $command); // Exc

?>

No i mam błąd na 7 linii a hasełko wpisałem dobrze ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No to tu pomogło, i na linii 12 był dwukropek a nie średnik i na lini 16 nie nie było średnika ale to już poprawiłem ale terazm mam tak

 
Warning: ssh2_connect() [function.ssh2-connect]]: Error starting up SSH connection(-1): Failed sending banner in /var/www/restart.php on line 23

Warning: ssh2_connect() [function.ssh2-connect]: Unable to connect to 188.116.33.41 in /var/www/restart.php on line 23

Warning: ssh2_auth_password() expects parameter 1 to be resource, boolean given in /var/www/restart.php on line 24

Warning: ssh2_exec() expects parameter 1 to be resource, boolean given in /var/www/restart.php on line 25

exec() expects parameter 1 to be resource, boolean given in [b]/var/www/restart.php[/b] on line [b]25

i tam gdzie jest function.ssh2-connect to mam hiperłącze do www.mojastrona.pl/function.ssh2-connecti nie wiem co dalej?;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 
Warning: ssh2_connect() [function.ssh2-connect]]: Error starting up SSH connection(-1): Failed sending banner in /var/www/restart.php on line 23

Masz po prostu dziadowskiego gotowca ;p

Spójrz na to, że dublujesz zmienną $port - co w konsekwencji powoduje to, że próbujesz się łączyć protokołem SSH na port serwera gry, a nie daemona ssh.

 

Spróbuj dać na sztywno

$connection = ssh2_connect($server, 22); // Laczenie

i zobacz, czy zadziała.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Poszło:) Dzięki

I mam jeszcze takie pytanie czy w tym skrypcie w miejscu gdzie mam

$command = "cd $directory; screen -A -m -d ./hlds_run -game $game
+ip $ip +port $port +sv_lan $lan +maxplayers $maxplayers +map $map";

to zamiast

"cd $directory; screen -A -m -d ./hlds_run -game $game +ip $ip
+port $port +sv_lan $lan +maxplayers $maxplayers +map $map";

moge wpisywać każdą inną komendę tak jak bym wpisywał do putty, i czy można w 1 skrypcie kilka razy użyc

$command = "...";

$command = "...";

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przepraszam ale nie spojrzałem czy jest to poprawiona wersja ..

Najwyraźniej nie zapisałem zmian po ostatnim używaniu skryptu : )

Tak tak jak byś wpisywał do putty..

Co do $command = "..."; nie możesz użyć kilka razy ale możesz zrobić jako następstwo poprzedniej zmiennej $command .= "...";czyli kontynuacja.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Możesz użyć kilka razy $command, ale w parze z ssh2_exec, czyli

 

$command = 'ls';
$stream = ssh2_exec($connection, $command);
$command = 'whoami';
$stream = ssh2_exec($connection, $command);

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×