如果我像这样执行多个命令
'sudo -s && cd/apps/10.0.10.200/wso2am-1.7.0/repository/logs && tail wso2carbon.log'
但是当我用我的用户登录服务器时,我必须通过执行以下命令来获得root权限
sudo -s
然后我还必须重新输入密码。 所以我的问题是当我执行上面的命令时,如何传递我的密码。因为我必须执行命令并等待它要求输入密码。 请指导我解决这个问题。 这是我的代码。
include('Net/SSH2.php');
$ssh = new Net_SSH2('10.0.10.200');
$ssh->login('xxxxx', 'xxxx') or die("Login failed");
echo $ssh->exec('sudo -s && cd /apps/10.0.10.200/wso2am-1.7.0/repository/logs && tail wso2carbon.log');
最佳答案
这是一个非常糟糕的主意,因为您需要在您的代码中保留用户密码,这代表了一个不可忽视的安全问题(对 ssh 服务器的完全远程访问)。您应该在要连接的 ssh 服务器上有一个特殊帐户,该帐户仅允许访问您要显示的日志文件。
但是如果你看一下 this superuser question或运行 sudo --help
。您会看到可以使用 sudo -S
获取 sudo
命令以从标准输入读取密码。
所以这应该可以解决问题:
$echo <password> | sudo -S <command>
使用 php:
echo $ssh->exec('echo '.$password.'| sudo -S tail /apps/10.0.10.200/wso2am-1.7.0/repository/logs/wso2carbon.log');
关于php - 如何在 php 中使用 sudo 以 root 用户身份访问服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40173834/