지난 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.php
및 makedir.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, 그리고 그것은 잘 작동합니다. 이 작업을 수행하지 않고 다른 옵션을 사용할 수 있습니까?