我在过去的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.php
和makedir.sh
创建一个目录testdir
在.sh文件中指定使用给定的PHP脚本与用户makesubdomain
。请教,因为我是一个非常初学者的PHP。
(注:我可以为用户makesubdomain
在远程计算机上成功运行makedir.sh
文件,用命令sudo ./makedir
,那太不提示输入sudo密码)
编辑
我曾在评论Defaults requiretty
/etc/sudoers
在http://www.unix.com/shell-programming-scripting/201211-sudo-sorry-you-must-have-tty-run-sudo.html中给出,它工作正常。如果不这样做,我可以有其他选择吗?