2013-08-01 2 views
0

지난 3 일 동안 PHP에서 문제가 있습니다. 아직 해결책을 찾지 못했습니다.phpseclib가 원격으로 명령을 실행하지 않습니다

Cent OS 원격 컴퓨터와 Ubuntu 로컬 컴퓨터가 있습니다. 내 로컬 컴퓨터에 test.php라는 PHP 스크립트가있어서 원격 컴퓨터에서 해당 PHP 스크립트를 사용하여 일부 Linux 명령을 실행하려고합니다. 원격 컴퓨터에 연결하기 위해 phpseclib를 사용했습니다. 다음은 PHP 스크립트 test.php입니다. 루트 로그인이 원격 %의 OS 시스템에서 비활성화되어 있기 때문에

<?php 
include('Net/SSH2.php'); 

define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX); 

$ssh = new Net_SSH2('10.3.2.0'); 
if (!$ssh->login('makesubdomain','abcdabcd')) { 
    exit('Login Failed'); 
} 
echo $ssh->exec('/usr/local/listdomain.backup/test/makedir.sh'); 
?> 

여기 root 사용자를 사용할 수 없습니다. 그래서 나도 하나 아래 /etc/sudoers] 파일에 makesubdomain ALL=(ALL) NOPASSWD: ALL을 추가하여 암호없이이 10.3.2.0

sudo -H sh -c ' 
    mkdir /usr/local/testdir 
    if [ $? -eq 0 ];then 
     echo "success"; 
    else 
     echo "not success"; 
    fi 
' 

에 상주하지만 지금은 쉘 스크립트입니다, sudo는 권한이 makesubdomain 사용자를 작성했다 나는 PHP 스크립트에서 프로그램을 실행할 때 명령 php test.php을 사용하여 오류 sudo: sorry, you must have a tty to run sudo을 표시합니다. 궁극적으로 사용자 makesubdomain과 함께 주어진 PHP 스크립트를 사용하여 .sh 파일에 지정된대로 testdir 디렉토리를 생성하려면 test.phpmakedir.sh과 무엇을해야합니까? 제발 조언을 나는 PHP에서 매우 초보자입니다.

(참고 : 너무 sudo는 암호를 묻지 않고 것을 나는, 사용자 makesubdomain과 같이 명령 sudo ./makedir으로, 원격 시스템에 성공적으로 makedir.sh 파일을 실행할 수 있습니다)

편집을

난에 Defaults requiretty 댓글을 달았했다 /etc/sudoers에 주어진대로 http://www.unix.com/shell-programming-scripting/201211-sudo-sorry-you-must-have-tty-run-sudo.html, 그리고 그것은 잘 작동합니다. 이 작업을 수행하지 않고 다른 옵션을 사용할 수 있습니까?

답변

0

$ssh->exec()을 수행하기 전에 $ssh->enablePTY()으로 전화 해보세요.