函数名称:ssh2_fetch_stream()
适用版本:PHP 5 >= 5.3.0, PECL ssh2 >= 0.10
函数描述:从SSH2会话中获取一个流
用法: resource ssh2_fetch_stream(resource $channel, int $streamid)
参数:
- $channel: SSH2通道资源,通过ssh2_shell()或ssh2_exec()函数打开。
- $streamid: 流ID,标识要获取的流的类型。
返回值: 成功时返回一个流资源,失败时返回false。
示例:
// 创建SSH2会话
$connection = ssh2_connect('example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
// 打开一个SSH2通道
$channel = ssh2_shell($connection, 'bash');
// 获取标准输出流
$stdout = ssh2_fetch_stream($channel, SSH2_STREAM_STDIO);
// 写入命令到标准输入流
fwrite($stdout, 'ls -l' . PHP_EOL);
// 读取命令输出
while ($line = fgets($stdout)) {
echo $line;
}
// 关闭连接
fclose($stdout);
ssh2_disconnect($connection);
上述示例中,我们首先通过ssh2_connect()函数建立到远程主机的SSH2连接。然后使用ssh2_auth_password()函数进行身份验证。
接下来,我们通过ssh2_shell()函数打开一个SSH2通道,将其作为参数传递给ssh2_fetch_stream()函数,以获取标准输出流。
使用fwrite()函数将命令写入标准输入流,然后通过fgets()函数读取命令的输出,并将其逐行打印出来。
最后,我们关闭流资源和SSH2连接,释放资源。
请注意,此示例仅用于演示目的。在实际应用中,建议使用更安全的身份验证方法,如公钥身份验证。