【问题标题】:Run command from different server using ssh2_exec() - php使用 ssh2_exec() 从不同的服务器运行命令 - php
【发布时间】:2012-03-28 02:55:49
【问题描述】:

有 2 台服务器(服务器 A 和服务器 B)。服务器 A 将发送一个命令,服务器 B 执行它。

我曾尝试从服务器 A 运行以下代码来指示服务器 B 执行工作并且它成功运行:

$connection = ssh2_connect('server.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_exec($connection, 'mv /var/www/test.php /root');

var_dump($connection);

从上面的代码中,它将 test.php 移动到根文件夹。如果我尝试使用相同的代码运行 .sh 文件,就会出现问题,它似乎根本没有运行。下面是我运行 .sh 文件的示例代码

$connection = ssh2_connect('serverB.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_exec($connection, './var/www/bbb_clean.sh');

var_dump($connection);

如果我从服务器 B 手动运行 bbb_clean.sh,它可以工作。请帮帮我。

【问题讨论】:

    标签: php ssh openssh


    【解决方案1】:

    我会尝试使用phpseclib, a pure PHP SSH implementation,并启用日志记录以查看发生了什么。例如。

    <?php
    include('Net/SSH2.php');
    define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);
    
    $ssh = new Net_SSH2('www.domain.tld');
    if (!$ssh->login('username', 'password')) {
        exit('Login Failed');
    }
    
    echo $ssh->exec('pwd');
    echo $ssh->getLog();
    ?>
    

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 1970-01-01
      • 2011-08-09
      • 2015-10-22
      • 2016-11-28
      • 2013-04-02
      • 1970-01-01
      • 2018-01-31
      • 2022-01-12
      相关资源
      最近更新 更多