2

我正在尝试执行一个简单的 shell 命令并在网页上打印结果,但结果为空。下面是我找到的一段代码,但到目前为止没有任何效果。

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

            exec($str, $output);

            echo '<pre>';
            print_r($output);
            echo '</pre>';
    ?>
4

3 回答 3

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);
?>
于 2013-08-22T07:00:47.600 回答
0

您缺少-p端口号之前的选项:

$str = "ssh -p $port $username@$server $command";
于 2013-08-22T07:19:35.867 回答
0

使用更面向对象的解决方案,您可以安装phpseclib版本 2:

composer require phpseclib/phpseclib

然后只需创建您的 ssh 对象:

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

在此示例中,我使用了通过用户名密码进行的连接,但您也可以通过 ssh-keys 进行连接。如果连接成功,您可以执行方法exec在服务器上执行您的命令。

于 2017-01-10T15:12:15.437 回答