1

我需要使用来自另一台计算机或同一台计算机的 ssh 从 php 执行位于 /root/scripts/ 的 perl 脚本。问题是我只是不知道如何让 php 登录到 root 帐户以仅执行该文件。

作为用户 $ 我无法访问 /root/scripts/,所以我无法使用 excec 或 system 调用它。我曾尝试使用 ssh 登录 sudo su,但当我输入密码时,它会挂起。

我把代码留在这里:

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


$ssh = new Net_SSH2('IP');
if (!$ssh->login('user', 'password')) {
exit('Login Failed');
}else{
echo ("login suscess");
}
echo $ssh->read(']$');

echo $ssh->write("sudo su\n");

echo $ssh->read('user:');
//the code normally runs if I dont write the lines below

$ssh->write('password\n');//here I try to get ssh the root pass but php wont respond after this
echo $ssh->read('user]#');//normally this would work to show the root prompt  but I don't know what happens


?>

我希望你能在这里帮助我。

4

2 回答 2

2

通常你会告诉 sudo 网络服务器用户可以执行脚本而无需使用密码进行身份验证。您必须在中添加如下所示的行/etc/sudoers

www-data ALL=(ALL:ALL) NOPASSWD: /root/scripts/script.pl

这将使 www-data 用户script.pl无需输入密码即可通过 sudo 执行。

然后使用 PHP 从 PHP 执行脚本

exec('sudo /root/scripts/script.pl');
于 2013-04-23T19:58:27.007 回答
0
  1. 回显 $ssh->write() 调用实际上并没有多大作用。

  2. sudo 需要密码。这是 phpseclib 网站上如何处理该问题的示例:http: //phpseclib.sourceforge.net/ssh/examples.html#sudo

于 2013-04-27T16:26:23.660 回答