Выполнить команду оболочки через ssh, используя PHP

1

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

 <?php
            $server = "myserver";
            $username = "myadmin";
            $command = "ps";
            $str = "ssh " .$username. "@" .$server. " " .$command;

            exec($str, $output);

            echo '<pre>';
            print_r($output);
            echo '</pre>';
    ?>
  • 0
    Команда ssh работает сама по себе, значит, вы пробовали ее сначала в командной строке?
  • 0
    exec($str, $output, $return); , Также проверьте код ошибки, var_dump(array($output, $return));
Показать ещё 3 комментария
Теги:
ssh

3 ответа

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

Попробуйте phpseclib, который будет работать.

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

    $server = "myserver";
    $username = "myadmin";
    $password = "mypass";
    $command = "ps";

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

    echo $ssh->exec($command);
?>
  • 0
    Я не могу установить какие-либо пакеты на эти машины. Есть ли другой способ обойти это?
  • 1
    Что ж, если вы можете создавать исходные файлы PHP на своих машинах, вы можете установить phpseclib, потому что это также просто набор файлов PHP.
Показать ещё 4 комментария
0

Используя более объектно-ориентированное решение, вы можете установить phpseclib версию 2 с помощью

composer require phpseclib/phpseclib

А затем просто создайте свой ssh-объект:

$ssh = new SSH2('yourhost');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

В этом примере я использовал соединение через имя пользователя и пароль, но вы также можете подключиться через ssh-ключи. Если соединение выполнено успешно, вы можете выполнить метод exec, чтобы выполнить команду на сервере.

0

Вам не хватает параметра -p перед номером порта:

$str = "ssh -p $port $username@$server $command";

Ещё вопросы

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