使用ssh2_exec() - php从不同的服务器运行命令

时间:2012-03-22 10:09:43

标签: php ssh openssh

有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,它可以工作。请帮帮我。

1 个答案:

答案 0 :(得分:0)

我会尝试使用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();
?>