2012-03-22 66 views
0

有2臺服務器(服務器A和服務器B)。服務器A將發送一個命令,服務器B執行它。使用ssh2_exec()從不同服務器運行命令 - php

我曾嘗試下面的代碼從服務器正在運行的指示服務器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,它的工作原理。請幫幫我。

回答

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(); 
?>