Проверьте удаленный каталог с помощью PHP SSH2 - PullRequest
6 голосов
/ 20 июня 2011

Как я могу проверить, существует ли каталог 'xyz' на удаленном сервере SSH с использованием PHP-SSH2?

Ответы [ 4 ]

20 голосов
/ 20 июня 2011

Вы можете использовать file_exists, используя префикс sftp 'ssh2.sftp: //'

Например, при стабильном соединении вы можете:

$sftp = ssh2_sftp($connection);
$fileExists = file_exists('ssh2.sftp://' . $sftp . '/home/marco');
3 голосов
/ 21 июня 2011

Я бы рекомендовал отказаться от PHP SSH2 вместо phpseclib, чистой реализации PHP SSH .

Помимо прочего, API PHP SSH2 отстой.Закрытые ключи должны быть сохранены в файловой системе для загрузки, тогда как с phpseclib все, что им нужно, это строки.Вы можете взять ключ из $ _POST без необходимости выгружать его в файловую систему, как того требует libssh2.В довершение всего, libssh2 требует, чтобы у вас был отдельный файл для публичного ключа, который является "мертвым мозгом", так как закрытый ключ содержит открытый ключ.возвращает цветовые коды ANSI, а иногда никогда не возвращает выходные данные, а иногда и делает (это противоречиво).

Наконец, phpseclib просто быстрее .

1 голос
/ 20 июня 2011

при условии, что это сервер 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);
0 голосов
/ 22 апреля 2013
 <?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");
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...