使用PHP通过ssh执行shell命令

时间:2013-08-22 06:57:10

标签: php shell ssh

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

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

            exec($str, $output);

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

3 个答案:

答案 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 方法在服务器上执行命令。