Skocz do zawartości


 

Zdjęcie

[PHP][SSH] Skrypt wykonujący komendy ssh w php

[PHP][SSH] Skrypt wykonujący komendy ssh w php

  • Proszę się zalogować aby odpowiedzieć
10 odpowiedzi na ten temat

[PHP][SSH] Skrypt wykonujący komendy ssh w php

#1 MizderCrack

MizderCrack

    Nowy użytkownik

  • Nowy
  • 5 postów

Napisany 30 styczeń 2014 - 15:44

Witam od paru dni staram się napisać konsolę serwerową do pewnej gry (nie będę robił reklamy :D ) działającej w javie. Problem polega na tym że skrypt nie wyświetla zwróconych informacji, za to wyniki komendy ls -all normalnie wyświetla. Czy ktoś wie jak to naprawić??

Oto skrypt konsoli:

<style type="text/css">
#console {
background-color: black;
color: white;
width: 650px;
height: 300px;
overflow: auto;
}
</style>
<?php
$con = ssh2_connect("localhost", 22);
ssh2_auth_password($con, "minecraft", "minecraft");
$stream = ssh2_exec($con, "java" );
 
sleep(5); 
stream_set_blocking($stream, true);
 
while ($buf = fread($stream, 1024)) {
$data .= $buf;
}
fclose($stream);
$data = str_replace("
", "</br>", $data);
?>
<div id="console">
<?
echo $data;
?>
</div>


  • 0

#2 wlodziu

wlodziu

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 197 postów
  • Skąd:Wieluń

Napisany 30 styczeń 2014 - 15:57

Próbowałeś tą komendę wstukać np w PuTTy? Jeśli tak to jakie output dostałeś?


  • 0

#3 MizderCrack

MizderCrack

    Nowy użytkownik

  • Nowy
  • 5 postów

Napisany 30 styczeń 2014 - 16:55

W odpowiedzi dostałem:

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available
    -client       to select the "client" VM
    -server       to select the "server" VM
    -jamvm        to select the "jamvm" VM
    -cacao        to select the "cacao" VM
    -zero         to select the "zero" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]
                  The default VM is client.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://java.sun.com/javase/reference for more details.


  • 0

#4 wlodziu

wlodziu

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 197 postów
  • Skąd:Wieluń

Napisany 30 styczeń 2014 - 19:17

Może zamiast fread to fgets?


  • 0

#5 MizderCrack

MizderCrack

    Nowy użytkownik

  • Nowy
  • 5 postów

Napisany 30 styczeń 2014 - 19:55

nadal to samo...
Jakieś inne pomysły??

 

EDIT: Czy ma ktoś gotowy skrypt konsoli serwerowej z jakiejś gry która by się łączyła za pomocą ssh???


Edytowany przez MizderCrack, 30 styczeń 2014 - 19:59.

  • 0

#6 linoskoczek

linoskoczek

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 414 postów

Napisany 31 styczeń 2014 - 10:33

A czo to robi?
 
while ($buf = fread($stream, 1024)) {
$data .= $buf;
}
 
$stream to zwykła zmienna, więc po co używać fread, które służy do odczytu zawartości pliku?
Tak powinno wystarczyć:
$data = $stream
 
Edit: Super, zjadło mi pół posta i musiałem pisać od nowa...

Edytowany przez linoskoczek, 31 styczeń 2014 - 10:35.

  • 0

Potrzebujesz wirtualnych pieniędzy w Mintshost? Pisz PW.


#7 Archi

Archi

    Wyznawca OVH

  • WHT+
  • PipPipPipPipPipPipPipPip
  • 2036 postów
  • Skąd:Warszawa
  • Imię:Łukasz

Napisany 31 styczeń 2014 - 10:42

Mówiłem, że bug z quote i code nienaprawiony, to nikt mnie nie chce słuchać.


  • 0

#8 linoskoczek

linoskoczek

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 414 postów

Napisany 31 styczeń 2014 - 10:55

Mówiłem, że bug z quote i code nienaprawiony, to nikt mnie nie chce słuchać.


Bo jak zawsze trudno wywołać. Za pare miesięcy się naprawi :D

Edytowany przez linoskoczek, 31 styczeń 2014 - 10:56.

  • 0

Potrzebujesz wirtualnych pieniędzy w Mintshost? Pisz PW.


#9 MizderCrack

MizderCrack

    Nowy użytkownik

  • Nowy
  • 5 postów

Napisany 31 styczeń 2014 - 12:49

@Archi 
Nie za bardzo rozumiem o co ci chodzi mógłbyś powiedzieć trochę jaśniej???

@linoskoczek

Niestety ale bez tego nic się nie wyświetla, poza tym nawet w dokumentacji ssh2 piszą żeby tego używać.

 

Ech ma ktoś jakieś inne pomysły??

 


  • 0

#10 wlodziu

wlodziu

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 197 postów
  • Skąd:Wieluń

Napisany 31 styczeń 2014 - 13:25

może http://www.php.net/m...et-contents.php


  • 0

#11 MizderCrack

MizderCrack

    Nowy użytkownik

  • Nowy
  • 5 postów

Napisany 31 styczeń 2014 - 15:24

@up 
niestety nie ale już sobie poradziłem z tym problemem.

Oto kod jak by ktoś potrzebował:

<?
$con = ssh2_connect("localhost", 22);
ssh2_auth_password($con, "login", "haslo");
$stream = ssh2_shell($con, 'vt102', null, 80, 24, SSH2_TERM_UNIT_CHARS);
fwrite( $stream, 'screen -r 5005'.PHP_EOL);
if(isset($_POST['slij'])) {
	$komeda = $_POST['command'];
	fwrite($stream, $komeda.PHP_EOL);	
}
sleep(1);
while($line = fgets($stream)) {
flush();
$data .= $line."<br />";
}
?>

Można zamknąć 


Edytowany przez MizderCrack, 31 styczeń 2014 - 15:26.

  • 0





0 użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników