从 raspbian 上的 PHP 脚本更改静态 IP 地址

我想从网页更改树莓派 4 上接口 eth0 的静态 IP 地址。我正在运行没有桌面的buster lite 4.19。据我了解,我需要修改 /etc/dhcpcd.conf 文件中的“static ip_address=”行以使更改永久生效。


我可以执行以下命令,并且在重新启动控制器之前它可以正常工作。


ifconfig eth0 192.168.1.10 netmask 255.255.255.0

我发现这个链接在命令行中效果很好。 使用 sed 更改 dhcpcd.conf 文件中的 IP 地址


我尝试使用 exec() 命令来执行 php 脚本中的命令。读取工作正常,但 sed 操作不写入任何内容。我假设存在权限问题,但不确定如何解决这个问题。我在代码中使用以下命令。


$newIPcidr = "192.168.1.10/24";


$cmd = "cat /etc/dhcpcd.conf | grep -e '^static ip_address=' | cut -d= -f2";

$curIP = exec($cmd);

 

$cmd = "sudo sed -i -e \"s@^static ip_address=" . $curIP . "\b@static ip_address=" . $newIPcidr . "@g\" /etc/dhcpcd.conf";

$output = exec($cmd);

有一个更好的方法吗?


预先感谢您对此的任何帮助!


拉风的咖菲猫
浏览 73回答 1
1回答

一只名叫tom的猫

我认为您的问题是当您不是 root 时以 root 身份执行命令的一般问题。有几种方法可以解决这个问题:1/. 编写以 root 身份执行的特定脚本或二进制文件。2/. 使用 sudo 并确保 pi Web 身份 (www-data) 在 /etc/sudoers 文件中有一个条目,使其能够执行您指定为 root 的命令,而无需使用密码3/. 更改您想要的文件的权限,例如组写入并使其组为www-data。唔。我看到我的是netdev。可能更安全的是给它 666 权限,以便它的世界可写,并保持组不变。我认为对于在受保护的环境中进行快速破解来说,后者可能是最简单的。例如 sudo chmod 666 /etc/dhcpcd.conf 并查看是否有效。2/. 对于相当安全的环境来说是可以的。我用过1/. 当我希望所有用户都能够执行 root 权限的操作时
打开App,查看更多内容
随时随地看视频慕课网APP