在Linux上使用Python更改IP设置

我需要提供一个Python程序,允许用户dynamic改变他的设备(IP,掩码,DNS和网关)的networking参数。 例如,将他的IP从192.168.1.10/24更改为192.168.1.15/24。 我不想以root身份运行我的程序 – 但我可以给我的用户一些特定的权利(例如将用户添加到可以修改/usr/network/interfaces文件的组)。

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

我可以通过parsinginterfaces文件并运行一些bash / shell命令来做到这一点,但我不想重新发明轮子。 我很确定有些人已经有我的问题,做了一些伟大的事情。

我在Ubuntu 12.04上运行。 我需要我的程序在Ubuntu 14.04,CentOS和RedHat上工作

Solutions Collecting From Web of "在Linux上使用Python更改IP设置"

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

  • 修改配置文件( interfaceshostresolv.conf ,…)
  • echo到sysfs来改变一些设置
  • 开始/停止某些网络服务
  • 切换防火墙配置(我们也是通过初始化脚本来完成的)

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

然而,我们基于对话框的前端是用Bash编写的,所以我们没有花费太多时间去寻找现有的库,这对你来说肯定是值得的。