我正在尝试执行一个简单的shell命令并在网页上打印结果,但结果为空。下面是我发现的一点代码,但到目前为止还没有任何工作。
<?php
$server = "myserver";
$username = "myadmin";
$command = "ps";
$str = "ssh " .$username. "@" .$server. " " .$command;
exec($str, $output);
echo '<pre>';
print_r($output);
echo '</pre>';
?>
答案 0 :(得分:5)
试试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);
?>
答案 1 :(得分:0)
您在端口号前缺少-p
选项:
$str = "ssh -p $port $username@$server $command";
答案 2 :(得分:0)
使用更面向对象的解决方案,您可以使用以下命令安装phpseclib版本2
composer require phpseclib/phpseclib
然后只需创建你的ssh对象:
$ssh = new SSH2('yourhost');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
在这个例子中,我使用了用户名和密码的连接,但你也可以通过ssh-keys连接。 如果连接成功,您可以执行 exec 方法在服务器上执行命令。