【问题标题】:Change IP settings using Python on Linux在 Linux 上使用 Python 更改 IP 设置
【发布时间】:2015-04-21 08:17:57
【问题描述】:

我需要提供一个 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 上运行

【问题讨论】:

  • 您能否澄清一下您是想修改网络配置文件还是想像ifconfig 那样即时更改IP 地址和子网掩码?
  • 我希望例如能够更改本地 IP 地址(例如从 192.168.1.10/24 到 192.168.1.11/24)

标签: python linux ubuntu network-programming


【解决方案1】:

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

  • 修改配置文件(interfaces, host, resolv.conf, ...)
  • 回显到 sysfs 以更改某些设置
  • 启动/停止某些网络服务
  • 切换防火墙配置(我们也通过 init 脚本做到了)

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

但是,我们基于对话框的前端已经用 Bash 编写,因此我们没有花太多时间来寻找现有的库,这对于您来说肯定是值得的。

【讨论】:

  • 感谢您的示例,是的,如果我没有找到任何库做我想做的事,我最终会编写自己的 bash 或 python 脚本,但那将是不幸的
  • 你肯定是按照正确的顺序做的 :-) 祝你好运。
猜你喜欢
  • 2011-02-23
  • 2015-03-27
  • 2019-09-19
  • 1970-01-01
  • 2020-04-04
  • 2014-08-08
  • 2020-05-09
  • 2016-05-22
  • 2012-02-10
相关资源
最近更新 更多