SSH2 поверх PHP, результаты Echo Back - PullRequest
0 голосов
/ 01 марта 2010

В настоящее время я использую SSH2 поверх PHP. Это мой первый раз, и я надеюсь, что смогу получить твердую обратную связь по этому вопросу.

По сути, я пытаюсь выполнить аутентификацию на сервере (через SSH), выполнить команду и затем отобразить результаты этой команды.

Вот что я сейчас использую:

if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("myserver.com", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username and password
if(!ssh2_auth_password($con, "myusername", "mypassword")) {
    echo "fail: unable to authenticate\n";
} else {
    // allright, we're in!
    echo "okay: logged in...\n";

    // execute a command
    if(!($stream = ssh2_exec($con, "ls -al" )) ){
        echo "fail: unable to execute command\n";
    } else{
        // collect returning data from command
        stream_set_blocking( $stream, true );
        $data = "";
        while( $buf = fread($stream,4096) ){
            $data .= $buf;
   echo $data;
        }
        fclose($stream);
    }
}
}
 ?>

Прямо сейчас, просто для проверки, я пытаюсь вернуть (echo) обратно команду "ls -al"

Я знаю, что эта команда работает, потому что я могу сделать это в терминале в Ubuntu. Наконец, я знаю, что это аутентификация, потому что с текущим кодом, приведенным выше, он возвращает "хорошо: авторизован". Но сейчас это все, что я получаю - все остальное пусто.

Любая помощь в этом была бы великолепна!

Кстати, я пытаюсь использовать метод, как указано здесь: http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/

1 Ответ

2 голосов
/ 13 сентября 2010

ssh2_exec () часто возвращается преждевременно. Единственное реальное решение, которое я нашел, это использовать phpseclib - чистую реализацию PHP SSH2:

http://phpseclib.sourceforge.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...