Spooky2
27.06.2010, 16:49:17
Mam takie pytanie - czy ktos probowal wykonac dwa polecenia, jedno po drugim wykonujac jedno polaczenie przy pomocy finkcji ssh2_connect?
Przyklad
$konsola = polaczenie($host, $uzytkownik, $haslo, $port);
$komenda_extra = "ls -lah";
$dane = komenda($konsola, $komenda_extra);
$komenda_extra2 = "cat plik.txt";
$dane2 = komenda($konsola, $komenda_extra2);
Probowalem jw, ale niestety nie dziala. Pierwsze polecenie wykonuje sie, przy drugim otrzymuje komunikat
Unable to request a channel from remote host
Chodzi mi wlasnie o to, aby nie nawiazywac kolejnego polaczenia do hosta celem wykonania drugiej komendy, tylko wykonac je w "obrebie" nawiazanego..
yevaud
27.06.2010, 19:26:56
a nie powinienes wczesniej zamknac strumienia ktory dostales ?
Spooky2
27.06.2010, 20:51:31
Probowalem, wlasciwie w standardzie (klasie, ktora mam) jest zamykany. Nic to jednak nie daje. Doszedlem do tego, ze to blad w bibliotece. Sciagnalem wiec nowe libssh2, skompilowalem. Komunikat sie zmienil, ale nadal nie dziala...
yevaud
27.06.2010, 21:41:36
zamiast ssh2_exec sproboj wrzucac polecenia ze pomoca
ssh2_shell<?php
$con=ssh2_connect('192.168.0.1', 22);
ssh2_auth_password($con, 'user', 'password');
$shell=ssh2_shell($con, 'xterm');
fwrite( $shell, 'cd /dir_one;'.PHP_EOL
); fwrite( $shell, 'ls -la;'.PHP_EOL
); fwrite( $shell, 'cd /dir_two;'.PHP_EOL
); fwrite( $shell, 'ls -la;'.PHP_EOL
);
?>
sroboj dorzucic tez
Spooky2
28.06.2010, 16:45:55
Ok, dzieki za sugestie. shell_exec - nie za bardzo chce dzialac z danym urzadzeniem. W kazdym razie poradzilem sobie z ssh2_exec - rezygnujac z klasy. Pozdro