2012-03-22 2 views
0

두 개의 서버 (서버 A와 서버 B)가 있습니다. 서버 A는 명령을 보내고 서버 B는 명령을 보냅니다. 위의 코드에서ssh2_exec() - php를 사용하여 다른 서버에서 명령 실행

$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 이동합니다 :

는 내가 일을 서버 B를 지시하는 서버 A에서 실행하는 아래의 코드를 시도하고 성공적으로 작동했다. 동일한 코드를 사용하여 .sh 파일을 실행하려고하면 문제가 발생합니다. 전혀 실행되지 않는 것처럼 보입니다. 아래는 내가 서버 B에서 수동으로 bbb_clean.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); 

를 실행하는 내 예제 코드, 그것은 작동합니다. 도와주세요.

답변

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(); 
?> 
관련 문제