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

时间:2020-06-24 05:43:13

标签: php linux raspberry-pi

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

我可以执行以下命令,直到重新启动控制器后,它才能正常工作。

ifconfig eth0 192.168.1.10 netmask 255.255.255.0

我发现此链接在命令行中效果很好。 Using sed to change ip addresses in dhcpcd.conf file

我试图使用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);

有更好的方法吗?

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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