使用PHP SSH2检查远程目录

时间:2011-06-20 11:21:41

标签: php ssh

如何使用PHP-SSH2检查远程SSH服务器中是否存在目录“xyz”?

4 个答案:

答案 0 :(得分:20)

您可以使用sftp前缀'ssh2.sftp://'

来使用file_exists

例如,通过建立连接,您可以:

$sftp = ssh2_sftp($connection);
$fileExists = file_exists('ssh2.sftp://' . $sftp . '/home/marco');

答案 1 :(得分:3)

我建议放弃PHP SSH2代替phpseclib, a pure PHP SSH implementation

除此之外,PHP SSH2的API很糟糕。私钥必须保存在要加载的文件系统上,而使用phpseclib它们需要的只是字符串。你可以从$ _POST获取一个密钥而不必像libssh2那样将它转储到文件系统。最重要的是,libssh2要求你为publickey设置一个单独的文件,因为私钥包含公钥。

来自libssh2的

ssh2_exec()也返回ANSI颜色代码,有时永远不会返回输出,有时也会(它不一致)。

最后,phpseclib是just plain faster

答案 2 :(得分:1)

假设是一个linux服务器

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$cmd = 'if test -d "/YOUR_DIRECTORY"; then echo 1; fi';
$stream = ssh2_exec($connection, $cmd);

答案 3 :(得分:0)

 <?php
 $connection = ssh2_connect('shell.example.com', 22);
 ssh2_auth_password($connection, 'username', 'password');

 $sftp = ssh2_sftp($connection);

 $stream = file_exists("ssh2.sftp://$sftp/path/to/file");
 ?>