首页 > 解决方案 > 从 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);

有一个更好的方法吗?

提前感谢您对此的任何帮助!

标签: phplinuxraspberry-pi

解决方案


我认为您的问题是当您不是 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-ish


推荐阅读