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