在Linux上使用Python更改IP设置

时间:2015-04-21 08:17:58

标签: python linux ubuntu network-programming

我需要提供一个Python程序,允许用户动态更改其设备的网络参数(IP,掩码,DNS和网关)。例如,将其IP从192.168.1.10/24更改为192.168.1.15/24。我不想以root身份运行我的程序 - 但我可以向我的用户提供一些细节权限(例如将用户添加到可以修改/usr/network/interfaces文件的组中)。

我发现的是pynetlinux库,但它只提供IP和掩码修改,需要以root身份运行(或者我可能会错过它)。

我可以通过解析interfaces文件并运行一些bash / shell命令来完成它,但我不想重新发明轮子。我很确定有些人已经解决了我的问题并做了一些很好的事情。

我在Ubuntu 12.04上运行。我需要我的程序也可以在Ubuntu 14.04,CentOS和RedHat

上工作

1 个答案:

答案 0 :(得分:1)

您应该尝试创建程序必须执行的完整操作列表。我发现在类似的设置中,为了响应用户交互,我们不得不:

  • 修改配置文件(interfaceshostresolv.conf,...)
  • 回显sysfs以更改某些设置
  • 启动/停止某些网络服务
  • 切换防火墙配置(我们也是通过init脚本完成的)

我们最终创建了一个Bash脚本,该脚本具有明确定义的接口,某个非特权用户可以使用sudo从任何其他程序调用该接口。

然而,我们基于对话框的前端已经用Bash编写,所以我们没有花太多时间寻找现有的库,这肯定值得您的工作。