Я пытаюсь выполнить простую команду оболочки и распечатать результат на веб-странице, но результаты пустые. Ниже приведен один бит кода, который я нашел, но пока ничего не сделано.
<?php
$server = "myserver";
$username = "myadmin";
$command = "ps";
$str = "ssh " .$username. "@" .$server. " " .$command;
exec($str, $output);
echo '<pre>';
print_r($output);
echo '</pre>';
?>
Попробуйте 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);
?>
Используя более объектно-ориентированное решение, вы можете установить phpseclib версию 2 с помощью
composer require phpseclib/phpseclib
А затем просто создайте свой ssh-объект:
$ssh = new SSH2('yourhost');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
В этом примере я использовал соединение через имя пользователя и пароль, но вы также можете подключиться через ssh-ключи. Если соединение выполнено успешно, вы можете выполнить метод exec, чтобы выполнить команду на сервере.
Вам не хватает параметра -p
перед номером порта:
$str = "ssh -p $port $username@$server $command";
exec($str, $output, $return);
, Также проверьте код ошибки,var_dump(array($output, $return));