[PHP] Screen linuxa

0

Witam,
próbuje napisać skrypt który przechwyca zawartość screena z linuxa ale nie wiem jak to zrobić. DOkładniej mam coś uruchomione na screenie i chciąłbym zawartość tego co drukuje w konsoli zapisac albo do pliku albo wyświetlić na bieżąco.

0

8-O 8-O 8-O

Program tee pomoże z zapisem do pliku tego, co wprowadzamy w konsoli.
Co to ma jednak wspólnego z PHP?

$ man tee

0

Ponieważ chce wyświetlać zawartość tego screena w odpowiedniej podstronie na www

0

szukałem, czytałem, napisałem

  $cos=ssh2_exec($q, 'screen -r serwer');
	  stream_set_blocking($cos, true);
	  $output = stream_get_contents($cos);
	  echo $output;

wywala:
Must be connected to a terminal.

Jakieś sugestie?

0

A czytanie z pliku ~/.bash_history nie wystarczy?

0

Co mi da bash_history?Tam znajde tylko historie komend..

0

http://pl2.php.net/manual/en/function.ssh2-exec.php
Zobacz w przykładzie jakie tam komendy są wywoływane przed exec -_-

0

No to przecież zrobiłem wyżej z ssh2_exec i napisałem jaki bład v_v

0
starsky napisał(a)

No to przecież zrobiłem wyżej z ssh2_exec i napisałem jaki bład v_v

Demonical Monk napisał(a)

Zobacz w przykładzie jakie tam komendy są wywoływane <font size="6">przed</span> exec -_-

0

Jakoś nie moge zauważyć ; O

0

Ja zobaczyłem od razu.

0
starsky napisał(a)

Jakoś nie moge zauważyć ; O
Wróć jak będziesz trzeźwy...

0
$shell = ssh2_shell($connection,"bash");

?

0

ssh2_connect(string $host [, int $port = 22 [, array $methods [, array $callbacks ]]])

Zapisz sobie 100 razy w zeszyciku...

0
$methods = array(
  'kex' => 'diffie-hellman-group1-sha1',
  'client_to_server' => array(
   'crypt' => '3des-cbc',
   'comp' => 'none'),
  'server_to_client' => array(
   'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
   'comp' => 'none'));

$callbacks = array('disconnect' => 'my_ssh_disconnect');

$connection = ssh2_connect($cfg['host'], 22, $methods, $callbacks);
ssh2_auth_password($connection, $cfg['user'], $cfg['pass'])
if (!$connection) die('Connection failed');

O to chodzi?

0

To już nie możesz spróbować i sprawdzić samemu?

0

Sprawdzałem...mój kod

<?php
$cfg = array(
		'host' => 'dasdas',			
		'user' => 'aha',				
		'pass' => 'aha           	
            );


$methods = array(
  'kex' => 'diffie-hellman-group1-sha1',
  'client_to_server' => array(
   'crypt' => '3des-cbc',
   'comp' => 'none'),
  'server_to_client' => array(
   'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
   'comp' => 'none'));

$callbacks = array('disconnect' => 'my_ssh_disconnect');

$connection = ssh2_connect($cfg['host'], 22, $methods, $callbacks);
ssh2_auth_password($connection, $cfg['user'], $cfg['pass']);
if (!$connection) die('Connection failed');
 /* Notify the user if the server terminates the connection */
function my_ssh_disconnect($reason, $message, $language) {
  printf("Server disconnected with reason code [%d] and message: %s\n",
         $reason, $message);
}
$stream=ssh2_exec($connection,"screen");
stream_set_blocking( $stream, true );
echo stream_get_contents($stream);
?>
Must be connected to a terminal. 
0

No wiesz, z hostem "dasdas" to raczej się nie połączy...

0

Przecież specjalnie dałem takei dane v_v

0

Ale jednak coś robisz źle z połączeniem skoro pisze ci: "Must be connected to a terminal." to znaczy że nie ma połączenia. Może styknie:

ssh2_connect($cfg['host']);
0

Może powiem tak: z inną komendą outputa wydaje ładnie tak jak ma być, ale jak daje screen -r nazwa to wywala to must be connected..

0

Możesz zobaczyć to tutaj:
http://87.98.163.87/n3.php

0
$stream=ssh2_exec($connection,"screen -r", 'vt102', array(), 50, 50, SSH2_TERM_UNIT_CHARS);
while (1) {
        $c = stream_get_contents($stream);
        echo $c;
}

Po włączeniu emulacji terminala udało się podpiąc screena. Jednak musisz zważyć na to, że screen nie zachowuje się jak zwykła aplikacja konsolowa. Czy tak trudno się domyślić, że skoro krzyczy o brak terminala to trzeba mu vty podać jakiś (na przykład właśnie vt102)?

0

Dziekuje, bardzo mi to pomogło no i oczywiście na żadnym innym forum nie uzyskałem odpowiedzi na moje jakże nurtujące pytanie..

1 użytkowników online, w tym zalogowanych: 0, gości: 1