我有一个媒体服务器(仅具有 LAN 访问权限),我希望能够通过 Web 界面访问的一些脚本来控制它。因此,我希望像通过 SSH 终端一样运行这些脚本。
使用命令 shell_exec() 确实是我想要的,例如:
<?php
$output = shell_exec('/home/user/scripts/scriptname.sh 2>&1');
echo $output;
?>
问题在于它以 www 用户身份运行它们,而不是以设计它们作为的用户身份运行(不想以 root 身份运行)。
.sh 文件的示例:
#!/bin/bash
xdotool key --window "$(xdotool search --name kodi)" q
sleep 5
pkill -9 -x kodi.bin
如果 Kodi 锁定或出现其他情况,此脚本将会终止 Kodi,它必须由运行它的用户运行(在本例中,该用户是自动登录 Ubuntu 的用户),并且我希望在页面上有一个按钮,可以通过 LAN 上任何设备上的任何 Web 浏览器执行此操作。
我不想通过权限更改、组等来做这些事情,我希望能够使用我为 ssh 设置的用户名和密码,作为 shell_exec 命令的一部分以不同的用户身份登录。
libssh2 使用所需的用户名和密码进行身份验证,因此如果需要,我会安装它,但如果能够使用 PHP 默认安装中包含的功能就更好了
答案1
不建议使用 php 访问你的 linux shell,我认为这不安全。如果你想使用 ssh 访问你的 linux shell,你可以使用带有 firessh 插件的 firefox。火狐