PHP-код для sshpass и ssh2

0

Я новичок в программировании PHP. Я пишу новый простой скрипт, но когда я помещаю этот код, я получаю пустую страницу, может кто-нибудь скажет мне, что случилось с этим кодом?

<?php
if($_POST) {
$host = $_POST['host'];
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect("127.0.0.1", "22")))
{
    echo "fail: unable to establish connection";
}
else
{
    if(!ssh2_auth_password($con, "root", "password"))
    {
        echo "fail: unable to authenticate ";
    }
    else
    {

        $stream = ssh2_exec($con, "".$host."");
            stream_set_blocking($stream, true);
        $item = "";
        while ($input = fread($stream,4096)) {
               $item .= $input;
        }
        echo $item;
    }
}

?>

извините за мой плохой EN

  • 1
    сделал какую-либо базовую отладку, например, включение display_errors / error_reporting?
  • 0
    подскажите пожалуйста как это сделать? я нуб в PHP
Показать ещё 8 комментариев
Теги:
ssh
sshpass

3 ответа

1
Лучший ответ

Возможно, вам повезло с phpseclib, чистой реализацией PHP SSH2. например.

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

Если вы хотите, чтобы команда выполнялась в течение определенного промежутка времени, прежде чем получать вывод, вы можете сделать $ssh->setTimeout(1). Таким образом, вы можете сделать ping 127.0.0.1 на Linux, который не остановится, но phpeclib остановится через минуту.

  • 0
    спасибо, что это помогло мне
0

Возможно, это не вопрос OP, но заголовок содержит php sshpass ssh, стоит добавить простой пример php, используя sshpass и ssh с exec().

$ssh_host = "127.0.0.1";
$ssh_port = "22";
$ssh_user = "root";
$ssh_pass = "password";
$command = "uname -a";
$connection = "/usr/bin/sshpass -p $ssh_pass /usr/bin/ssh -p $ssh_port -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $ssh_user@$ssh_host";
$output = exec($connection." ".$command." 2>&1");
echo "Output: $output";
0

Я работал несколько дней, чтобы сделать работу ssh2 в PHP [выделенной серверной панели администратора на www], но я не нашел решения для проблемы с выходом. Единственное, что работает (но это достаточно хорошо для некоторых скриптов) заключается в том, чтобы спать некоторое время между "exec" и "read":

$stream = ssh2_exec($connection->conn, 'pgrep screen');
stream_set_blocking($stream, true);
// sleep 0.5 sec, this trick won't work for commands that execution time is unpredictable
usleep(500000);
$line = '';
while($get = fgets($stream))
{
    $line .= $get;
}
echo $line;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню