In addition to the last post (13 years ago) from Dennis K. I corrected two typos (constant SSH2_STREAM_STDIO was misspellt) and removed (too many) brackets - this code works:
<?php
$stdout_stream = ssh2_exec($connection, "lsssss -la");
$sio_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDIO);
$err_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDERR);
stream_set_blocking($sio_stream, true);
stream_set_blocking($err_stream, true);
$result_dio = stream_get_contents($sio_stream);
$result_err = stream_get_contents($err_stream);
echo 'stderr: ' . $result_err;
echo 'stdio : ' . $result_dio;
?>
PHP.mk документација
ssh2_fetch_stream
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
function.ssh2-fetch-stream.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
function.ssh2-fetch-stream.php
ssh2_fetch_stream
Референца за `function.ssh2-fetch-stream.php` со подобрена типографија и навигација.
ssh2_fetch_stream
(PECL ssh2 >= 0.9.0)
ssh2_fetch_stream — Fetch an extended data stream
= NULL
Преземи проширен поток на податоци SSH2_STREAM_STDERR Презема алтернативен подток поврзан со SSH2 канал поток. SSH2 протоколот моментално дефинира само еден подток, STDERR, кој има ID на подток
Параметри
channelstreamid- (дефинирано како 1).
Вратени вредности
SSH2 канал поток.
Примери
Враќа бараниот ресурс на потокот.
<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$stdio_stream = ssh2_shell($connection);
$stderr_stream = ssh2_fetch_stream($stdio_stream, SSH2_STREAM_STDERR);
?>Види Исто така
- ssh2_shell() Пример #1 Отворање на школка и преземање на stderr поток поврзан со неа
- ssh2_exec() Пример #1 Барање интерактивна школка
- ssh2_connect() - Барај интерактивна школка
Белешки од корисници 4 белешки
- Поврзи се на SSH сервер ¶
пред 5 години
ingo at baab dot de ¶
19 години пред
In addition to the last post from Ricardo Striquer:
Simple block the stream with stream_set_blocking(), and you dont have to sleep() the script...
<?php
stdout_stream = ssh2_exec($connection, "/bin/lssss -la /tmp");
$err_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDERR);
$dio_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDDIO);
stream_set_blocking($err_stream, true);
stream_set_blocking($dio_stream, true);
$result_err = stream_get_contents($err_stream));
$result_dio = stream_get_contents($dio_stream));
?>
Рикардо Стрикер (ricardophp yohoocombr) ¶
19 години пред
I got a friend using those functions and he was not able to use this ssh2_fetch_stream function. First of all I got the ssh2_shell sample by webmaster at spectreanime dot com, but this function does not work with his sample, i believe thats because he use fwrite instead of ssh2_shell or ssh2_exec to run the command.
This sample below is to run under a command line and is fully functional. note that i add the sleep as advised by webmaster at spectreanime dot com
<?php
echo "Connexion SSH ";
if (!($connection=@ssh2_connect("69.69.69.69", 22))) {
echo "[FAILED]\n";
exit(1);
}
echo "[OK]\nAuthentification ";
if (!@ssh2_auth_password($connection,"root","YourPassword")) {
echo "[FAILED]\n";
exit(1);
}
echo "[OK]\n";
$stdout_stream = ssh2_exec($connection, "/bin/lssss -la /tmp");
sleep(1);
$stderr_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDERR);
echo "Erros encontrados!\n------------\n";
while($line = fgets($stderr_stream)) { flush(); echo $line."\n"; }
echo "------------\n";
while($line = fgets($stdout_stream)) { flush(); echo $line."\n";}
fclose($stdout_stream);
?>