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

Zaloguj się, aby skomentować

Będziesz mógł dodać komentarz po zalogowaniu się



Zaloguj się

×