2013-08-01 174 views
0

我在过去的3天中遇到了一个问题。还找不到解决方案。phpseclib无法远程执行命令

我有一个Cent OS远程机器和一个Ubuntu本地机器。我在本地机器上有一个名为test.php的php脚本,以便我想使用该php脚本在远程计算机上运行一些Linux命令。我使用phpseclib连接到远程机器。以下是php脚本test.php

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

自根登录已在远程百分之OS机被停用我不能在此使用root用户。 所以我创造了这个makesubdomain用户,并给须藤权限,太没有由下一个在/etc/sudoers文件。该添加makesubdomain ALL=(ALL) NOPASSWD: ALL密码是shell脚本驻留在10.3.2.0

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

但现在当我运行从PHP脚本终端使用命令php test.php它显示错误sudo: sorry, you must have a tty to run sudo。最终,我需要做什么与test.phpmakedir.sh创建一个目录testdir在.sh文件中指定使用给定的PHP脚本与用户makesubdomain。请教,因为我是一个非常初学者的PHP。

(注:我可以为用户makesubdomain在远程计算机上成功运行makedir.sh文件,用命令sudo ./makedir,那太不提示输入sudo密码)

编辑

我曾在评论Defaults requiretty/etc/sudoershttp://www.unix.com/shell-programming-scripting/201211-sudo-sorry-you-must-have-tty-run-sudo.html中给出,它工作正常。如果不这样做,我可以有其他选择吗?

回答

0

尝试在做$ssh->exec()之前致电$ssh->enablePTY()